我已经厌倦了编写三元表达式来清理数据,比如:
$x = isset($array['idx']) ? $array['idx'] : null;
// and
$x = !empty($array['idx']) ? $array['idx'] : null;
有没有一种原生方法或ZF存取器/过滤器来获取某个给定数组的数组元素值,而不需要:
error_reporting
isset
/empty
check isset
operator my own function or empty
@
empty
check类似于:
$x = get_if_set($array['idx']);
// or
$x = Zend_XXX($array, 'idx')
发布于 2016-06-18 16:17:22
PHP7引入了null coalesce operator ??
。假设您足够幸运地运行它,您可以这样做
$x = $array['idx'] ?? null;
发布于 2017-08-28 17:08:49
我想说的是,使用一个辅助函数来连接你的数组。
function getValue($key, $arr, $default=null) {
$pieces = explode('.', $key);
$array = $arr;
foreach($pieces as $array_key) {
if(!is_null($array) && is_array($array) && array_key_exists($array_key, $array)) {
$array = $array[$array_key];
}
else {
$array = null;
break;
}
}
return is_null($array) ? $default : $array;
}
$testarr = [
['foobar' => 'baz'],
['active' => false]
];
$output = getValue('0.foobar',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('0',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('1.active',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('i.do.not.exist',$testarr,'NOT FOUND');
var_dump($output);
这样,您可以根据自己的喜好提供默认值而不是null,您不需要将数组恢复为另一个对象,并且您可以请求任何嵌套得尽可能深的值,而不必检查“父”数组。
发布于 2012-04-25 00:01:03
声明你的变量并给它们一些初始值。
$x = NULL;
$y = 'something other than NULL';
现在,如果您有一个具有x和y键的数组$myArray,提取函数将覆盖初始值(您也可以不对其进行配置)
$myArray['x'] = 'newX';
extract($myArray);
//$x is now newX
如果不存在键,则变量的初始值保持不变。它还会将其他数组键放入相应的变量中。
https://stackoverflow.com/questions/10300868
复制相似问题