2016-09-21 4 views
1

array_filterを使用して配列から0とnullをフィルタリングしています。array_filterは1つの0と1つのnullを残します

コード:

while ($row1 = $sth1->fetch(PDO::FETCH_ASSOC)){ 

    $rows_shared_id[$row1['shared_id']]['shared_id'] = $row1['shared_id']; 

} 

$erows_shared_id = array_filter($rows_shared_id); 

foreach($erows_shared_id as $evalue){ 

    echo $evalue['shared_id'] . "<br>"; 

} 

結果は、array_filterせず、0の値、またはnullで複数のセルを有しています。 array_filterを使用すると、最初のものを除いて、すべての0とヌルが除外されます。だから、1つの0と1つのヌル値を持つ配列が残っています。どうしてすべてを削除するのですが、最初はどうしたらいいですか?ありがとう!

+2

事実の後に 'array_filter'関数を使用する代わりに、パフォーマンスを向上させるためにwhileループ中に0とヌルを除外します。 なぜ 'array_filter'関数があなたにとってうまくいかないのか分かりません!私はあなたの入力配列を見ることに興味があります。 –

答えて

1

array_filterは1レベルの配列で動作しますが、2レベルの配列です。

は、ご使用のアレイのサブアレイにマッピングarray_filterをお試しください:

$erows_shared_id = array_map('array_filter', $rows_shared_id); 

あなたはその後、子供のように空の配列を持っている任意のキーを削除するには、再度配列をフィルタリングすることができます。

$erows_shared_id = array_filter(array_map('array_filter', $rows_shared_id)); 
関連する問題