PHP-可变安全输出

时间:2019-03-04 15:14:36

标签: php isset

我正在从一个非官方的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');

不幸的是,仍然会输出未定义的变量错误。

我想知道是否有更好的方法来处理如示例中所示的此类信息。

1 个答案:

答案 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');