我正在从一个非官方的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');
不幸的是,仍然会输出未定义的变量错误。
我想知道是否有更好的方法来处理如示例中所示的此类信息。
答案 0 :(得分:1)
问题是可能未设置密钥,因此您必须检查它:
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');