0

この方法でフォーマットされたこの配列コレクションがあります。

$collection = array(
    '0' => array(
        'user_id' => 12345
        'name' => 'test'
    ),
    '1' => array(
        'user_id' => 6789
        'name' => 'test2'
    ),
)

私の問題は、id:6789 を検索するために for ループを作成したくないということです。

現在、私がやっていることはこれです:

$user_id = 6789
foreach($collection as $key => $collect)
{
    if($collect['user_id'] == $user_id)
    {
         unset($collection[$key]);
    }
}

forループを実行する代わりに、データを削除する効率的な方法があるかどうかを尋ねたいだけです。

ありがとう。

4

3 に答える 3

0

アイテムは多次元配列に格納されているため、キーを見つけるより良い方法は考えられません。ただし、キーに user_id を入れることで初期配列を別の方法で構築できる場合は、次のようにします。

$collection = array(
    '12345' => array(
        'user_id' => 12345
        'name' => 'test'
    ),
    '6789' => array(
        'user_id' => 6789
        'name' => 'test2'
    ),
)

それからあなたはただすることができます

$user_id = 6789;
unset($collection[$user_id ]);
于 2013-11-09T06:52:26.953 に答える
0

array_walk_recursive()ここでドキュメントを見つけることができると呼ばれるphpの関数があります:

http://www.php.net/manual/en/function.array-walk-recursive.php

ループを使用するよりも効率的かどうかはわかりませんが、あなたが求めていることを行う必要があります

于 2013-11-09T06:32:13.730 に答える