この記事は公開されてから8年経過しています。現在とは内容が異なる場合がありますのでご注意ください。
最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。
最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。
配列の中の特定のキーの値の位置を入れ替えたいときに元の位置のキーを消して、
Arr::insert() や Arr::insert_after_key() で挿入しようと思ったのですが、 StackOverflow で次のようなコードを見つけました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function array_swap(&$array,$swap_a,$swap_b){ list($array[$swap_a], $array[$swap_b]) = array($array[$swap_b], $array[$swap_a]); } $items = array( 0 => 'contact', 1 => 'home', 2 => 'projects' ); array_swap($items, 0, 1); var_dump($items); // OUTPUT array(3) { [0]=> string(4) "home" [1]=> string(7) "contact" [2]=> string(8) "projects" } |
FuelPHP の Arr クラスを拡張して swap メソッドを作成してみました。
1 2 3 4 5 6 7 8 9 |
<?php class Arr extends Fuel\Core\Arr { public static function swap(&$array, $key1, $key2) { list($array[$key2], $array[$key1]) = array($array[$key1], $array[$key2]); } } |
こうすると次のように呼び出せます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$items = array( 0 => 'contact', 1 => 'home', 2 => 'projects' ); Arr::swap($items, 0, 1); var_dump($items); // OUTPUT array(3) { [0]=> string(4) "home" [1]=> string(7) "contact" [2]=> string(8) "projects" } Arr::swap($items, 2, 1); var_dump($items); // OUTPUT array(3) { [0]=> string(4) "home" [1]=> string(8) "projects" [2]=> string(7) "contact" } |
swap() の 第1引数の配列 の 第2引数で指定したキーの値 と 第3引数で指定したキーの値 を入れ替えます。