1

我有一个项目需要回显 $variable['key'];

有时 $variable['key'] 不存在。当我回显 $variable['key']; 时,这些变量会产生错误;直接地。

我目前的方法是

echo (isset($variable['key'])) ? $variable['key'] : '';

这不是非常有效的方法。我不想把所有的键都写两次。

我需要一个函数。基本上这会检查 $variable['key']; 在函数内部并返回它的值。

function get_ifisset(&$var = null){
if(isset($var)){ return $var; }
}

echo get_ifisset($vars['key']);

但由于 $variable['key'] 不存在,我无法将它们发送到函数内部

这种用法会引发错误,即“未定义的键”。

跟随功能也是我不喜欢的另一种方法。

function get_ifisset($var, $key){
if(array_key_exists($key, $GLOBALS[$var])){ return $GLOBALS[$var][$key]; }
}

我想了解是否有任何方法可以检查函数内部数组键的存在性。

property_exists(); array_key_exists(); isset();

4

2 回答 2

1

您可以将数组、键和默认值传递给函数:

public function getValue($array, $key, $default = '') {
    return isset($array[$key]) ? $array[$key] : $default;
}

$this->getValue($variable, 'key');

此外,根据我的经验function get_ifisset(&$var),不会引发任何错误(我没有将其默认设置为 null)。

于 2014-12-16T11:27:52.823 回答
1

修改 @Justinas 函数:

public function getValue($array, $key, $default = '') {
    if(!is_array($key)) {
        return isset($array[$key]) ? $array[$key] : $default;
    }
    $arr = & $array;
    foreach($key as $subkey) {
        if(!isset($arr[$subkey])) {
            return $default;
        }
        $arr = & $arr[$subkey];
    }
    return $arr;
}

所以你可以在多维数组上使用它

getValue($array, "key");

getValue($array, Array("key", "subkey", "subsubkey"));
于 2014-12-16T11:34:10.430 回答