PHP7.4 では、数値キーを使用して配列のインデックスを再作成する手法が新たに利用可能になりました。
これを「配列の再パッキング」または「スプラパッキング」のような楽しいものと呼ぶことにします。簡単なプロセスでは、splat 演算子 ( ...
) ("spread operator" とも呼ばれます) を使用して配列をアンパックし、"対称配列破壊" によって新しい配列に第 1 レベルの要素を入力します。
- RFC: 配列式のスプレッド演算子
- スプレッド演算子は PHP5.6 で利用可能になりました
- PHP7.1 で対称配列の分割が利用可能になりました
- Laravel ニュース:配列のスプレッド演算子が PHP 7.4 に登場
比較コード: (デモ)
$array = [2 => 4, 5 => 3, "3" => null, -10.9 => 'foo'];
var_export(array_values($array));
var_export([...$array]);
両方が出力されます:
array (
0 => 4,
1 => 3,
2 => NULL,
3 => 'foo',
)
繰り返しになりますが、splat 演算子は数値キーを持つ配列に厳密に制限されています。これは、splat 演算子が他のものをチョークし、アンパックされた値を配列に直接書き込む機能が PHP7.4 以降でのみ利用できるためです。
予選の状況で同じ出力を提供する 2 つのテクニックでは、いつ一方を他方よりも使用する必要がありますか?
これはキーを再インデックスする方法ではなくarray_values()
、新しく利用可能な手法との比較であることに注意してください。
これは次のものとは異なります。
配列のインデックスを再作成する方法を尋ねる他の数十の古いページ。