22

配列がある場合:

Array
(
    [0] => 
    [1] => a
    [2] => b
    [3] => c
)

そして、配列から最初の null 以外の値 (この場合は "a") を取得したいと考えています。どうすればそれをうまく簡単に行うことができますか?

4

6 に答える 6

42

素晴らしくて簡単かどうかわからない。しかし、簡単なアプローチは次のようになります。

 $first = current(array_filter($sparse_array));

どこで「array_filterの」値が抽出されるので、空のエントリと誤ったエントリはスキップされます。単にそれらの残りのエントリの最初のものを提供しますが。current

于 2012-06-22T15:20:09.143 に答える
5
function get_first_not_null($array){
  foreach($array as $v){
    if($v !== null){
        return $v;
    }
  }
  return null;
}
于 2012-06-22T15:16:30.233 に答える
3
function getFirstNotNull($array) {
    foreach($array as $val) {
         if(!is_null($val) || !$val) return $val;
    }
}
于 2012-06-22T15:16:23.170 に答える
3
$res = null;
foreach ($arr as $v) {
    if ($v !== null) {
        $res = $v;
        break;
    }
}
于 2012-06-22T15:16:40.720 に答える
2

さて、あなたはこれを試すことができます:

foreach($array as $x) {
    if( $x) break;
}
if( $x) {
    // $x is the first non-null value
}
else {
    // There were no non-null values
}
于 2012-06-22T15:15:35.540 に答える
1

私は使うだろうarray_reduce

$firstNonNull = array_reduce($array, function($v, $w) {
  return $v ? $v : (isset($w) ? $w : FALSE);
});
于 2013-03-08T15:47:34.103 に答える