是否有一种惯用的方法从PHP中的数组中获取可能未定义的键?

Tha*_*you 7 php arrays idioms

PHP人民,我已经厌倦了这样做

$value = isset($arr[$key]) ? $arr[$key] : null;
Run Code Online (Sandbox Code Playgroud)

或这个

$value = array_key_exists($key, $arr) ? $arr[$key] : null;
Run Code Online (Sandbox Code Playgroud)

不要没有人告诉我这样做

$arr   = array(1);
$key   = 5;
$value = $arr[$key];
// Notice: Undefined offset: 5
Run Code Online (Sandbox Code Playgroud)

我得了支气管炎.不是没有人有时间f'dat.


我想能做出一个功能......

function array_get(Array $arr, $key, $default=null) {
  return array_key_exists($key, $arr)
    ? $arr[$key]
    : $default
  ;
}
Run Code Online (Sandbox Code Playgroud)

但这是最好的(最惯用的)方式吗?

Ama*_*ali 6

更优雅的方式:

function ifsetor(&$value, $default = null) {
    return isset($value) ? $value : $default;
}
Run Code Online (Sandbox Code Playgroud)

现在你可以这样做:

$value   = ifsetor($arr[$key]);
$message = ifsetor($_POST['message'], 'No message posted');
Run Code Online (Sandbox Code Playgroud)

这里$value通过引用传递,所以它不会抛出通知.

进一步阅读: