这个问题在这里已有答案:
我从非官方API获取信息。此API非常大,有时不包含所有元素。我正在尝试在我的网站上显示此API的值而没有任何错误。
我所做的是检查JSON值,以防止错误:
echo (isset($json['item'])) ? $json['item'] : '';
工作,但它看起来非常无组织。我已经考虑过创建一个处理安全输出的函数,如下所示:
public function safeoutput($input, $fallback = '') {
if(isset($input)) {
return $input;
}
if(empty($input) || !isset($input)) {
return $fallback;
}
}
然后做:
echo $engine->safeoutput($json['item'], 'Unavailable');
不幸的是,仍然会输出未定义的变量错误。
我想知道是否有更好的方法来处理这些信息,就像我在示例中所示。
问题是密钥可能没有设置,所以你必须检查它:
public function safeoutput($input, $key, $fallback = '') {
if(isset($input[$key])) {
return $input;
}
if(empty($input[$key]) || !isset($input[$key])) {
return $fallback;
}
}
或者您可以使用更短的版本:
public function safeoutput($input, $key, $fallback = '') {
if(array_key_exists($key, $input) && !empty($input[$key])){
return $input[$key];
}
return $fallback;
}
并使用数组和键调用该方法:
echo $engine->safeoutput($json, 'item', 'Unavailable');