やりたいことは
lang
1$array = array( 2 array( 3 array("one" => "A1", "two" => "A2", "three" => "A3"), 4 array("one" => "B1", "two" => "B2", "three" => "B3"), 5 array("one" => "C1", "two" => "C2", "three" => "C3"), 6 ), 7 ); 8とあるのを 9$array = array( 10 array( 11 array("two" => "A2", "one" => "A1", "three" => "A3"), 12 array("two" => "B2", "one" => "B1", "three" => "B3"), 13 array("two" => "C2", "one" => "C1", "three" => "C3"), 14 ), 15 );
とすることです。
(無駄に多次元になってますが仕様です。)
やりかたとして
・foreachで下の階層に対して操作する
・array_sliceでキーが"two"の箇所を取得する
・unsetでキーが"two"の箇所を削除する
・array_unshiftで上記のarray_sliceで取得したものを先頭に追加する
というのを考えました。
これを実装して
lang
1<?php 2$array = array( 3 array( 4 array("one" => "A1", "two" => "A2", "three" => "A3"), 5 array("one" => "B1", "two" => "B2", "three" => "B3"), 6 array("one" => "C1", "two" => "C2", "three" => "C3"), 7 ), 8 ); 9 10echo "<pre>"; 11var_dump($array); 12foreach ( $array as $valueA ) { 13 foreach ( $valueA as $valueB ) { 14 $get_two = array_slice($valueB, 1, 1); 15 var_dump($get_two); 16 17 unset($valueB["two"]); 18 var_dump($valueB); 19 20 array_unshift($valueB, $get_two["two"]); 21 var_dump($valueB); 22 } 23} 24var_dump($array); 25echo "</pre>"; 26?>
としました。
ここで問題なのは
・foreachで下の階層に対して操作を行っても、もとの$arrayは変わっていないこと
・array_unshiftでは値は追加できてもキーが追加できないこと
です。
これらを解決する方法がありましたら教えてください。
また、こんな回りくどいことをしなくても意図した結果が得られる方法があれば教えてください。
よろしくお願いします

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/01 09:14
2015/02/06 05:12