Если у меня есть массив:
Array ( [0] => [1] => a [2] => b [3] => c )
И я хочу получить первое ненулевое значение из массива, в данном случае «a». Как я мог делать это хорошо и легко?
Не уверен насчет приятного и легкого. Но короткий подход может заключаться в следующем:
$first = current(array_filter($sparse_array));
Где array_filter
будет извлекать вам « правдивые » значения, таким образом пропуская пустые и ложные записи. Хотя current
просто дает вам первую из оставшихся записей.
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; } }
$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); });