我只是想出了这个小帮手的功能:
function get(&$var, $default=null) {
return isset($var) ? $var : $default;
}
这不仅适用于字典,而且适用于所有类型的变量:
$test = array('foo'=>'bar');
get($test['foo'],'nope'); // bar
get($test['baz'],'nope'); // nope
get($test['spam']['eggs'],'nope'); // nope
get($undefined,'nope'); // nope
对每个引用传递以前未定义的变量不会导致注意错误。相反,通过引用传递$ var将定义它并将其设置为null。如果传递的变量为null,也将返回默认值。还要注意在spam / eggs示例中隐式生成的数组:
json_encode($test); // {"foo":"bar","baz":null,"spam":{"eggs":null}}
$undefined===null; // true (got defined by passing it to get)
isset($undefined) // false
get($undefined,'nope'); // nope
注意,即使$ var通过引用传递,get($ var)的结果将是$ var的副本,而不是引用。我希望这有帮助!