2016-08-15 2 views
1

後、私は最近、アレイ上array_filterを実行した後、アレイからの私のmongoIDを印刷すると、いくつかの問題を抱えてきた配列からMongoIDを印刷しませんarray_filterは、今配列は含まれていますPHPは、アレイフィルタ

Array ([3] => MongoId Object ([$id] => 57b0facace2350981c000029) [4] => MongoId Object ([$id] => 57b0fafcce2350981c00002b)) 

IDをプリントアウトし、今のループ障害が発生したりしませんが:

$length = count($array); 
    for ($i = 0; $i < $length; $i++) { 
    $id = $array[$i]->{'$id'}; 
    echo $id; 
    } 

これもやはり動作しますが、ヌル要素を削除するためにフィルタリングした後で、現在は配列全体を正しく反復していないようですが、これは別の問題かもしれません。これを解決する助けに感謝します。

+0

ルック@

foreach ($array as &$value) { } 

感謝あなたのポストされた配列のキーを押してから、あなたのforループとあなたがそこで何をしているのかを見てください:P – Rizier123

+0

私の鍵はフィルタリング後に3で始まるからです。だから私は、配列の長さを使用するのではなく、各アイテムのためにそれをループする方法を見つける必要がありますか? – D3181

+1

正確です。そしてあなたは 'array_slice()'でキーを保持しているので、3時にはまだ開始します:) foreachループを使うか、 'array_keys()'を使って配列からキーを取得してから、 forループと配列インデックスのキー。 – Rizier123

答えて

1

nullの要素を削除するためにarray_filterを使用した後に、array_sliceによる配列内のキーの保存がエラーの原因でした。これは動作しませんでしたし、代わりにforeachループは、それが配列のすべての要素を反復することを確実にするために必要とされたことを反復するために、配列の長さを使用して意味:でRizier123