PHP - 可变安全输出[重复]

问题描述 投票:0回答:1

我从非官方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');

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

我想知道是否有更好的方法来处理这些信息,就像我在示例中所示。

php isset
1个回答
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');
© www.soinside.com 2019 - 2024. All rights reserved.