0Pricing
PHP Academy · レッスン

配列変換関数

array_map、array_filter、array_reduceを適用します。

「配列変換関数」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

関数型による配列変換

PHPには、明示的なループを使わずに配列を変換できる、強力な3つの高階関数があります。

  • array_map() — 各要素を変換します
  • array_filter() — 条件を満たす要素だけを残します
  • array_reduce() — 1つの値に集約します

array_map()

すべての要素にコールバックを適用し、新しい配列を返します。

<?php
$prices = [10, 20, 30, 40];

$doubled = array_map(fn($p) => $p * 2, $prices);
print_r($doubled); // [20, 40, 60, 80]

// Multiple arrays
$a = [1, 2, 3];
$b = [10, 20, 30];
$sums = array_map(fn($x, $y) => $x + $y, $a, $b);
print_r($sums); // [11, 22, 33]

array_filter()

コールバックの条件を満たす要素だけを残します。コールバックを指定しない場合は、falseと評価される値を削除します。

<?php
$numbers = [1, 2, 3, 4, 5, 6];

$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // [1=>2, 3=>4, 5=>6] — keys preserved!

$reindexed = array_values($evens); // re-index

$mixed = [0, 'hello', '', null, false, 42];
print_r(array_filter($mixed)); // [1=>'hello', 5=>42]

array_reduce()

コールバックを累積的に適用して、配列を1つの値に集約します。

<?php
$cart = [
    ['name' => 'Widget', 'price' => 10],
    ['name' => 'Gadget', 'price' => 25],
    ['name' => 'Doohickey', 'price' => 5],
];

$total = array_reduce($cart, fn($carry, $item) => $carry + $item['price'], 0);
echo $total;  // 40

変換の連鎖

map、filter、reduceをチェーンして、表現力豊かなデータパイプラインを構築します:

<?php
$scores = [45, 80, 30, 90, 55, 70];

$passingAvg = array_sum(
    array_filter($scores, fn($s) => $s >= 50)
) / count(array_filter($scores, fn($s) => $s >= 50));

echo $passingAvg;  // 74.75

array_mapでキーを扱う

array_mapはキーを渡しません。キーと値の両方が必要な場合は、array_walkを使用します:

<?php
$prices = ['apple' => 1.0, 'banana' => 0.5, 'cherry' => 2.0];

$formatted = [];
array_walk($prices, function($price, $name) use (&$formatted) {
    $formatted[$name] = '$' . number_format($price, 2);
});

print_r($formatted);

array_chunk()

配列を指定したサイズのチャンクに分割します:

<?php
$items = range(1, 10);
$batches = array_chunk($items, 3);
print_r($batches);
// [[1,2,3], [4,5,6], [7,8,9], [10]]

array_combine()

キーの配列と値の配列を組み合わせて、連想配列を作成します:

<?php
$keys   = ['name', 'age', 'city'];
$values = ['Alice', 30, 'London'];

$person = array_combine($keys, $values);
print_r($person);
// ['name'=>'Alice','age'=>30,'city'=>'London']

array_mapによるarray_zip

PHPにはネイティブのzip機能はありませんが、array_map(null, ...)でzipに似た構造を作成できます:

<?php
$names  = ['Alice', 'Bob'];
$scores = [90, 85];

$zipped = array_map(null, $names, $scores);
print_r($zipped);
// [['Alice', 90], ['Bob', 85]]

array_mapはキーを保持する

単一の配列に対しては、array_mapはキーを保持します。再インデックスするにはarray_valuesを使用します:

<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_map(fn($v) => $v * 10, $assoc);
print_r($result);
// ['a'=>10, 'b'=>20, 'c'=>30] — keys preserved

array_sumとarray_product

数値配列をすばやく集約するためのヘルパー関数です:

<?php
$nums = [1, 2, 3, 4, 5];

echo array_sum($nums);      // 15
echo array_product($nums);  // 120 (1*2*3*4*5)

// Works with floats too
$prices = [1.5, 2.5, 3.0];
echo array_sum($prices);    // 7.0

確認問題

各要素にコールバックを適用し、新しい配列を返す関数はどれですか:

まとめ: 配列変換関数

まとめ:

  • array_map() — 各要素を変換して新しい配列を作成
  • array_filter() — 述語に一致する要素を保持
  • array_reduce() — 1つの累積値に畳み込み
  • array_chunk() — サブ配列に分割
  • array_combine() — キーと値から連想配列を作成
  • array_sum/product() — 数値をすばやく集約

よくある質問

「配列変換関数」レッスンは無料ですか?

はい。「配列変換関数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「配列変換関数」で何を学びますか?

array_map、array_filter、array_reduceを適用します。 ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「配列変換関数」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. インデックス配列と連想配列
  2. 多次元配列
  3. 配列のソートと検索
  4. 配列変換関数
← PHP Academyに戻る