背景
Vue.jsで、配列に入ったdata要素を前後でスワップする機能を作成しようと思ったのですが、
reactiveに画面に反映できず、バックエンドで簡単に処理するにはどうしよう?と思い調べてみました。
追記:2020/04/25 ご指摘いただいたので、コードに修正を加えています
コード
example.php
<?php
$array = ['a','b', 'c', 'd', 'e'];
swapValues($array, 2);
var_dump($array);
function swapValues(array &$array, int $key): void
{
[$array[$key], $array[$key + 1]] = [$array[$key + 1], $array[$key]];
}
よくある書き方として、$tmp
などの配列の値を一時保存するコードはよく見るのですが、
これだと直感的に見てもわかりやすくないですか?
takeaways
これはphp7.1から追加された、「対称的な配列の分解(Symmetric Array Destructuring)」
と呼ばれるシンタックスですね。
配列の短縮構文 ([]) を使って、 代入用に配列の値を取り出せるようになりました (foreach でも使えます)。 これは、list() の代替として使えます (list() もまだ使えます)。
参照:https://www.php.net/manual/ja/migration71.new-features.php