0

例として次の 3 次元配列を指定します。

Array
(
[324] => Array
    (
        [0] => Array
            (
                [workid] => 324
                [wname] => Y quiero llegar a más / Para triunfar en la vía
                [recordingid] => 476
                [rname] => Y quiero llegar a más / Para triunfar en la vía
                [rsubname] => Fandangos sevillanos
            )

    )

[325] => Array
    (
        [0] => Array
            (
                [workid] => 325
                [wname] => Ya basta
                [recordingid] => 479
                [rname] => Ya basta
                [rsubname] => 
            )

    )

[326] => Array
    (
        [0] => Array
            (
                [workid] => 326
                [wname] => Y sin embargo te quiero
                [recordingid] => 563
                [rname] => Y sin embargo te quiero
                [rsubname] => 
            )

        [1] => Array
            (
                [workid] => 326
                [wname] => Y sin embargo te quiero
                [recordingid] => 562
                [rname] => Y sin embargo te quiero
                [rsubname] => (continuación)
            )

        [2] => Array
            (
                [workid] => 326
                [wname] => Y sin embargo te quiero
                [recordingid] => 478
                [rname] => Y sin embargo te quiero
                [rsubname] => 
            )

    )
)

3 次元配列の最初の配列を選択し、それを別の配列に割り当てたい、それを$arr_firstと呼びましょう

$arr_firstの出力は次のようになります

Array
                (
                    [workid] => 324
                    [wname] => Y quiero llegar a más / Para triunfar en la vía
                    [recordingid] => 476
                    [rname] => Y quiero llegar a más / Para triunfar en la vía
                    [rsubname] => Fandangos sevillanos
                )

確かにループして、欲しいものを手に入れることができました。しかし、私は知る必要があります配列全体をループせずにこれを達成するための最もエレガントで最速の方法は何ですか?

編集:配列は単なる例です...ハードコードされています。キー値は変更される可能性があります。したがって、IDに依存しない最初の配列を取得する必要があります

4

2 に答える 2

2

これを試してください:($old_arrayあなたの3次元配列であると仮定します)

$arr_first = array_merge(array(), reset(reset($old_array))); // merge with empty array to clone
print_r($arr_first);

array_shift()の代わりに使用するreset()と、配列から最初の要素も削除されるため、注意してください。

「そしてそれを別の配列に割り当てる」と尋ねられたので使用しましarray_merge()たが、両方の配列が同じであることに問題がなければ、ドロップしarray_merge()て固執することができます:

 $arr_first = reset(reset($old_array));

この作業フィドルを確認してください

于 2013-08-21T20:18:43.483 に答える
0

$arr_first = array_shift(array_values($array));

var_dump($arr_first);

このようにして、常に最初に id に依存しないようにすることができます。

于 2013-08-21T20:22:21.690 に答える