0

特定の値を区別するために配列を設定することにしました。配列内の特定の値を検索する場合は、検索したこの値内の残りのデータを使用したいと思います。

Array
(
    [0] => Array
        (
            [id] => 123
            [0] => Array
                (
                    [name] => Burger Joint
                    [pluralName] => Burger Joints
                    [shortName] => Burgers
                )

        )

    [1] => Array
        (
            [id] => 617
            [0] => Array
                (
                    [name] => reeeJoint
                    [pluralName] => reeeJoints
                    [shortName] => reee
                )

        )

    [2] => Array
        (
            [id] => 12355
            [0] => Array
                (
                    [name] => LeftJoint
                    [pluralName] => LeftJoints
                    [shortName] => Left
                )

        )
    [4] => Array
        (
            [id] => 526
            [0] => Array
                (
                    [name] => asdfJoint
                    [pluralName] => asdfJoints
                    [shortName] => asdf
                )

        )
)

ある種の検索を実行したいのですが、の値がある場合123、123 id配列(この場合は最初の配列)のすべてを含む新しい配列のみを取得します。

これを見つけるためのベストプラクティスは何ですか?

ありがとう!

編集:

いくつかのコメントに基づいて、アレイを設定する新しい方法を思いつくことができました。しかし、私はまだ価値が存在するかどうかを示すことに取り組むために同じ質問を疑問に思っています:

foreach($values as $value)
{
 ...
   $categoriesExtract[$id] = array($category_stringArray2Sugg);
}

私にこの配列を与えます:

Array
(
    [123] => Array
        (
            [0] => Array
                (
                    [name] => Burger Joint
                    [pluralName] => Burger Joints
                    [shortName] => Burgers
                )

        )

    [617] => Array
        (
            [0] => Array
                (
                    [name] => reeeJoint
                    [pluralName] => reeeJoints
                    [shortName] => reee
                )

        )

    [12355] => Array
        (
            [0] => Array
                (
                    [name] => LeftJoint
                    [pluralName] => LeftJoints
                    [shortName] => Left
                )

        )
    [526] => Array
        (
            [0] => Array
                (
                    [name] => asdfJoint
                    [pluralName] => asdfJoints
                    [shortName] => asdf
                )

        )
)
4

5 に答える 5

1

このコードを使用します。一致後に新しい配列が作成されます。

 $arr = array();
 for($i = 0;$i<count($array);$i++)
 {
     if($array[$i][id] == 123)
     {
          $arr[] = $array[$i][0];
     }
 }
 print_r($arr);
于 2013-02-22T04:29:02.940 に答える
1

id をキーとして使用してから、キーを引き抜いてみませんか?

$array = Array
(
    [123] => Array
        (
            [name] => Burger Joint
            [pluralName] => Burger Joints
            [shortName] => Burgers
        )

    [617] => Array
        (
            [name] => reeeJoint
            [pluralName] => reeeJoints
            [shortName] => reee
        )
)


$new_array = $array[123];

ID 123 のアイテムが 2 つありました。これは、この状況が機能しないことを意味しますが、質問では、最初の値が返されることを示しました。ID の二重化はエラーですか、それとも適切な方法ではないことを意味するため、合法的に発生する可能性があります。

于 2013-02-22T04:30:16.360 に答える
0

あなたはこのように簡単に行うことができます:

$array = array(0 => 
                  array('id' => 123,
                        0 => array('name' => 'Burger Joint',
                                   'pluralName' => 'Burger Joints',
                                   'shortName' => 'Burgers')
                                   )
                );

$new_array =  array();
foreach($array as $value){
   $new_array[$value['id']][] = $value[0];
}

出力は

Array
(
    [123] => Array
        (
            [0] => Array
                (
                    [name] => Burger Joint
                    [pluralName] => Burger Joints
                    [shortName] => Burgers
                )

        )

)

乾杯!!!!!

ここで作業デモを確認してください作業デモリンク

于 2013-02-22T04:55:08.293 に答える
0

この解決策を試してください:ここで$find配列の値を変更してIDを検索します

$array  = Array(Array("id" => 123,0 => Array("name" => "Burger Joint","pluralName" => "Burger Joints","shortName" => "Burgers")),
                Array("id" => 617,0 => Array("name" => "reeeJoint","pluralName" => "reeeJoints","shortName" => "reee")),
                Array("id" => 12355,0 => Array("name" => "LeftJoint","pluralName" => "LeftJoints","shortName" => "Left")),
                Array("id" => 526,0 => Array("name" => "asdfJoint","pluralName" => "asdfJoints","shortName" => "asdf"))
                );
$find   = array(123,526); /// Get all the array with this id

$result = array();
foreach($array as $vals){
    if(in_array($vals['id'],$find)){
        $result[]  = $vals;
    }
}

echo "<pre>";
print_r($result);
于 2013-02-22T04:57:15.193 に答える
0

簡単なものをもっと複雑にしただけだと思います...

提案のおかげで、これを行うことで配列を取得できました

$array(123); =>これは、値が123の配列を取得するだけです...

于 2013-02-22T05:06:56.290 に答える