Php 当数组中不存在密钥时,如何避免崩溃?
我在PHP中使用数组有很多困难。他们要求我写很多代码,比如Php 当数组中不存在密钥时,如何避免崩溃?,php,Php,我在PHP中使用数组有很多困难。他们要求我写很多代码,比如isset()、empty()、array_key_exist()我真的不想处理这些。如果密钥不存在,只需将其作为null处理即可 $arr = [ 'location' => 'Paris' ] $arr['country'] // boom crash. How to walkaround this? 有什么建议吗 编辑 我不想使用任何if条件。没有isset()、数组\密钥\存在、异常等。如果密钥不存在,我只希望它们
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不会输出任何错误?这比你提到的设置错误处理程序要好。这激励我写下自己的答案。我会很快把它寄出去!丹克什恩!