スキップしてメイン コンテンツに移動

PHP8配列操作短縮構文

PHP8配列操作短縮構文

配列の短縮構文と連想配列

PHP8 では配列を作成する際に従来の array() 構文に加えて、短縮構文 [] が標準でサポートされています。短縮構文は可読性が高く、特に連想配列を扱う際に便利です。

$user = [
    'id' => 42,
    'name' => 'Alice',
    'roles' => ['admin', 'editor']
];

上記の例では、連想配列を短縮構文で定義しています。キーと値のペアはコロンで区切り、要素はカンマで区切ります。PHP8 では型宣言と組み合わせることで、配列の構造をより厳密に定義できます。

多次元配列と配列の分割代入

多次元配列は、配列の中にさらに配列を持つ構造です。PHP8 では配列の分割代入(array destructuring)が導入され、複雑な構造を簡潔に扱えるようになりました。

$data = [
    ['id' => 1, 'name' => 'Bob'],
    ['id' => 2, 'name' => 'Carol']
];

[$first, $second] = $data;
[$id1, $name1] = $first;
[$id2, $name2] = $second;

echo $name1; // Bob
echo $name2; // Carol

このように、配列の分割代入を使うと、ネストされた配列から必要な値を直感的に取り出せます。特にデータベースから取得した結果を扱う際に有効です。

array_map と array_filter の使い方

PHP の標準関数 array_map と array_filter は、配列操作の基本ツールです。array_map は配列の各要素に対してコールバック関数を適用し、新しい配列を返します。array_filter は条件に合致する要素だけを残すフィルタリングを行います。

$numbers = [1, 2, 3, 4, 5];

// array_map で各要素を二乗
$squared = array_map(fn($n) => $n * $n, $numbers);
// $squared は [1, 4, 9, 16, 25]

// array_filter で偶数だけを残す
$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
// $evens は [2, 4]

PHP8 のラムダ式(fn)を組み合わせることで、コードがさらに簡潔になります。配列の変換や条件抽出を頻繁に行う場合は、これらの関数を積極的に活用しましょう。

スプレッド演算子とリストの活用

スプレッド演算子 (...) は、配列を展開して関数に渡したり、別の配列に結合したりする際に便利です。PHP8 では、配列の結合や関数呼び出しでスプレッド演算子を使うことができます。

$a = [1, 2];
$b = [3, 4];
$c = [...$a, ...$b]; // [1, 2, 3, 4]

また、リスト構文(list())は配列の分割代入と同様に、複数の変数に一度に値を代入できます。PHP8 では list() の代わりに短縮構文を使うことが推奨されています。

$tuple = [10, 20, 30];
[$x, $y, $z] = $tuple; // $x=10, $y=20, $z=30

スプレッド演算子とリストを組み合わせると、配列の結合と分割を一行で完結できるため、コードの可読性が大幅に向上します。

この記事はAIによって作成されました。

コメント