3

後で修正する必要がある問題があります。スクリプト全体を書き直す時間があれば、そうするでしょうが、それはプログラマーの人生ですよね?とにかく、私はプロジェクトを引き継ぎました、そして私は次のような多次元の混合連想/数値配列を持っています:

Array
(
    [item1] => Array
        (
            [dataset] => Array()
            [3] => Array()
            [7] => Array()
        )
    [item2] => Array
        (
            [dataset] => Array()
            [4] => Array()
            [19] => Array()
            [2] => Array()
        )
)

私がする必要があるのは、各itemXインデックスのデータセットインデックスをシフトして、これをもたらす最後のインデックスにすることです。

Array
(
    [item1] => Array
        (
            [3] => Array()
            [7] => Array()
            [dataset] => Array()
        )
    [item2] => Array
        (
            [4] => Array()
            [19] => Array()
            [2] => Array()
            [dataset] => Array()
        )
)

これを実現するのに役立つ可能性のあるいくつかのことは、データセットインデックスが常にitemXインデックスの最初のインデックスであり、キーが常に'dataset'であり、その他はすべて常に数値インデックスであることを知っていることです。PHPでこれを行う方法はありますか?それが混合配列であるという事実は私を投げています。数値インデックスをリセットして0から開始することはできません。順序がシフトされているかどうかは関係ありません。すべて、「データセット」インデックスの前にあるだけです。多分それはそれらの日の1つに過ぎません....:\どんな提案やコメントも大歓迎です。

4

1 に答える 1

3

このようなすべての要素をループします。

foreach ($all_items as $key =>$items) {
   $dataset = $items['dataset'];
   unset($all_items[$key]['dataset']); // Removing it (from the top)
   $all_items[$key]['dataset'] = $dataset; // Adding it again (at the bottom)
}

'dataset'要素の設定を解除して再度追加すると、要素が下部に追加されます。

foreachの$itemsではなく、元の配列を直接変更することが重要です。これらの変更は元の配列に影響を与えないためです。

于 2009-05-18T16:58:49.627 に答える