Php 当数组中不存在密钥时,如何避免崩溃?

Php 当数组中不存在密钥时,如何避免崩溃?,php,Php,我在PHP中使用数组有很多困难。他们要求我写很多代码,比如isset()、empty()、array_key_exist()我真的不想处理这些。如果密钥不存在,只需将其作为null处理即可 $arr = [ 'location' => 'Paris' ] $arr['country'] // boom crash. How to walkaround this? 有什么建议吗 编辑 我不想使用任何if条件。没有isset()、数组\密钥\存在、异常等。如果密钥不存在,我只希望它们

我在PHP中使用数组有很多困难。他们要求我写很多代码,比如
isset()、empty()、array_key_exist()我真的不想处理这些。如果密钥不存在,只需将其作为null处理即可

$arr = [
   'location' => 'Paris'
]

$arr['country'] // boom crash. How to walkaround this?
有什么建议吗

编辑
我不想使用任何if条件。没有isset()、数组\密钥\存在、异常等。如果密钥不存在,我只希望它们为null?这在PHP中可能吗?应用程序非常抽象,每个请求的数据可能会有所不同。

@$arr['country']
-抑制错误、错误做法

function getValue(array $array, $key) {
    return isset($array[$key]) ? $array[$key] : null;
}

echo getValue($mysteryArray, 'mysteryKey');
和$arr['country']
-使用引用,可能会向数组中添加其他元素,这是错误的做法

function getValue(array $array, $key) {
    return isset($array[$key]) ? $array[$key] : null;
}

echo getValue($mysteryArray, 'mysteryKey');
或:


我自己的功能灵感来自deceze。工作完美

/**
 * Fill array with null on nonexistent keys
 *
 * @param array $arg
 * @param array $possible_keys
 */
function fillNull(array $arg, array $possible_keys){
    foreach($possible_keys as $key){
        $result[$key] = empty( $arg[$key] ) ? null : $arg[$key];
    }
    return $result;
}

您可以使用ArrayIterator或提供所需接口的某个类

<?php

class MyArrayIterator extends ArrayIterator {

        public function __construct($array, $flags=0) {
                parent::__construct($array, $flags);
        }

        public function offsetGet($index) {
                if (!$this->offsetExists($index)) {
                        return null;
                }

                return parent::offsetGet($index);
        }

}

$arr = [
   'location' => 'Paris'
];

$arrIt = new MyArrayIterator($arr);

echo $arrIt['country'];

echo "Only this is echoed";

用or检查。我想PHP支持
试试。。。捕捉
,也许你应该看看。我知道if条件。我不想要它们。我有大量的数据。这需要在代码中包含许多if(isset())。这并不美丽。谢谢。
@$arr['country']
但是只要使用
如果
,真的…@Error404为什么你想写一些无效的东西并且希望php不会输出任何错误?这比你提到的设置错误处理程序要好。这激励我写下自己的答案。我会很快把它寄出去!丹克什恩!