【发布时间】:2012-06-24 22:07:04
【问题描述】:
如果我有一个数组:
Array
(
[0] =>
[1] => a
[2] => b
[3] => c
)
我想从数组中获取第一个非空值,在本例中为“a”。我怎么能做得这么好又轻松?
【问题讨论】:
-
我的意思是简单易行。
如果我有一个数组:
Array
(
[0] =>
[1] => a
[2] => b
[3] => c
)
我想从数组中获取第一个非空值,在本例中为“a”。我怎么能做得这么好又轻松?
【问题讨论】:
不确定好不好。但一个简短的方法可能是:
$first = current(array_filter($sparse_array));
array_filter 将在哪里提取“truthy”值,从而跳过空的和错误的条目。而current 只是为您提供了剩余条目中的第一个。
【讨论】:
array_filter() 添加自定义回调,以仅显式过滤null 值。还请注意,current() 期望其参数通过引用传递,因此目前这将发出“严格标准”通知/警告。
...(array_filter($arr, "strlen"))
0 不会被返回,如果存在的话?
function get_first_not_null($array){
foreach($array as $v){
if($v !== null){
return $v;
}
}
return null;
}
【讨论】:
function getFirstNotNull($array) {
foreach($array as $val) {
if(!is_null($val) || !$val) return $val;
}
}
【讨论】:
$array 而不是$arrea。
$res = null;
foreach ($arr as $v) {
if ($v !== null) {
$res = $v;
break;
}
}
【讨论】:
嗯,你可以试试这个:
foreach($array as $x) {
if( $x) break;
}
if( $x) {
// $x is the first non-null value
}
else {
// There were no non-null values
}
【讨论】:
我会使用array_reduce
$firstNonNull = array_reduce($array, function($v, $w) {
return $v ? $v : (isset($w) ? $w : FALSE);
});
【讨论】: