読み込み中...

PHP array_columnの使い方!理解を3倍にする7つの具体例

PHP array_column関数の使用例 PHP
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPを学び始めて、配列について理解を深めることが目標のあなたへ。

これから「array_column」という便利な関数の活用方法を、具体的なコード例とともに丁寧に解説します。

この記事を読めば、PHP array_columnの使い方を理解し、自身のコーディングスキルが3倍になることを約束します。

●array_columnとは

PHPのarray_column関数は、入力配列から指定したカラムの値を取り出し、それらを配列として返す役割を果たします。

この関数は特に、データベースから取得した結果の配列を扱うときに便利です。

●array_columnの基本的な使い方

PHPのarray_column関数は次のように使います。

array_column(array $input, mixed $column_key, mixed $index_key = null): array

ここで、$inputは入力配列、$column_keyは取得したい値のカラム名、$index_keyは結果配列のキーとなるカラム名を指定します。

$index_keyは指定しなくても構いません。

○サンプルコード1:array_columnの基本形

ここでは一番シンプルな形のarray_columnの使用例を示します。

$data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 25],
    ['id' => 2, 'name' => 'Dick', 'age' => 30],
    ['id' => 3, 'name' => 'Harry', 'age' => 35],
];

$names = array_column($data, 'name');

print_r($names);

このコードでは、$data配列から’name’カラムの値を取り出し、新しい配列$namesを作成しています。

この例では’Tom’, ‘Dick’, ‘Harry’という3つの名前が$names配列に格納されます。

○サンプルコード2:index_keyパラメータの使用例

次に、index_keyパラメータを指定する例を見てみましょう。

$data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 25],
    ['id' => 2, 'name' => 'Dick', 'age' => 30],
    ['id' => 3, 'name' => 'Harry', 'age' => 35],
];

$names = array_column($data, 'name', 'id');

print_r($names);

このコードでは、$data配列から’name’カラムの値を取り出し、その際に’id’カラムの値をキーとした新しい配列$namesを作成します。

この例では、配列のキーが各要素の’id’となり、値が’name’となります。

つまり、出力結果は、[1 => ‘Tom’, 2 => ‘Dick’, 3 => ‘Harry’]となります。

●array_columnの詳細な使い方

基本的な使い方に続き、もう少し複雑なケースに対応するためのarray_column関数の詳細な使い方について解説します。

次の例では、マルチディメンショナル配列から値を取得する方法と、インデックスを指定して値を取得する方法を見ていきます。

○サンプルコード3:マルチディメンショナル配列から値を取得

まずは、マルチディメンショナル配列から値を取得する例を見てみましょう。

$data = [
    ['id' => 1, 'info' => ['name' => 'Tom', 'age' => 25]],
    ['id' => 2, 'info' => ['name' => 'Dick', 'age' => 30]],
    ['id' => 3, 'info' => ['name' => 'Harry', 'age' => 35]],
];

$names = array_column($data, 'name', 'id');

print_r($names);

このコードでは、$data配列から’info’配列の中の’name’カラムの値を取り出し、その際に’id’カラムの値をキーとした新しい配列$namesを作成します。

この例では、出力結果は空の配列となります。

なぜなら、’name’は’info’配列の中にあり、直接指定することはできないからです。

では、次のサンプルコードではどうすればよいのでしょうか。

○サンプルコード4:インデックスを指定して値を取得

次に、インデックスを指定して値を取得する例を見てみましょう。

$data = [
    ['id' => 1, 'info' => ['name' => 'Tom', 'age' => 25]],
    ['id' => 2, 'info' => ['name' => 'Dick', 'age' => 30]],
    ['id' => 3, 'info' => ['name' => 'Harry', 'age' => 35]],
];

$info = array_column($data, 'info');

$names = array_column($info, 'name', 'id');

print_r($names);

このコードでは、まず$data配列から’info’配列を取り出し、新しい配列$infoを作成します。

次に、$info配列から’name’カラムの値を取り出し、その際に’id’カラムの値をキーとした新しい配列$namesを作成します。

この例では、出力結果は[1 => ‘Tom’, 2 => ‘Dick’, 3 => ‘Harry’]となります。

●array_columnの応用例

ここまでarray_columnの基本的な使い方と詳細な使い方を見てきましたが、array_columnは他の配

列関数と組み合わせることで、さまざまな場面で活躍します。

array_map、array_filter、array_reduceと組み合わせた使用例を紹介します。

○サンプルコード5:array_columnとarray_mapの組み合わせ

次に、array_columnとarray_mapを組み合わせた使用例を見てみましょう。

array_map関数は、配列のすべての要素に対してユーザー定義関数を適用することができます。

$data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 25],
    ['id' => 2, 'name' => 'Dick', 'age' => 30],
    ['id' => 3, 'name' => 'Harry', 'age' => 35],
];

$names = array_column($data, 'name');
$names_upper = array_map('strtoupper', $names);

print_r($names_upper);

このコードでは、まず$data配列から’name’カラムの値を取り出し、新しい配列$namesを作成します。

次に、array_map関数を使って、$names配列の各要素にstrtoupper関数を適用し、全ての文字列を大文字に変換した新しい配列$names_upperを作成します。

この例では、出力結果は[‘TOM’, ‘DICK’, ‘HARRY’]となります。

○サンプルコード6:array_columnとarray_filterの組み合わせ

次に、array_columnとarray_filterを組み合わせた使用例を見てみましょう。

array_filter関数は、配列の要素をユーザー定義関数でフィルタリングすることができます。

$data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 25],
    ['id' => 2, 'name' => 'Dick', 'age' => 30],
    ['id' => 3, 'name' => 'Harry', 'age' => 35],
];

$ages = array_column($data, 'age');
$ages_over_30 = array_filter($ages, function ($age) {
    return $age > 30;
});

print_r($ages_over_30);

このコードでは、まず$data配列から’age’カラムの値を取り出し、新しい配列$agesを作成します。

次に、array_filter関数を使って、$ages配列の各要素をフィルタリングし、30歳以上の値だけを取り出した新しい配列$ages_over_30を作成します。

この例では、出力結果は[2 => 35]となります。

○サンプルコード7:array_columnとarray_reduceの組み合わせ

次に、array_columnとarray_reduceを組み合わせた使用例を見てみましょう。

array_reduce関数は、配列のすべての要

素を使って単一の結果を生成することができます。

$data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 25],
    ['id' => 2, 'name' => 'Dick', 'age' => 30],
    ['id' => 3, 'name' => 'Harry', 'age' => 35],
];

$ages = array_column($data, 'age');
$sum_of_ages = array_reduce($ages, function ($carry, $item) {
    return $carry + $item;
}, 0);

echo $sum_of_ages;

このコードでは、まず$data配列から’age’カラムの値を取り出し、新しい配列$agesを作成します。

次に、array_reduce関数を使って、$ages配列の各要素を加算し、その合計値を求める処理を行います。この例では、出力結果は90となります。

●array_columnの注意点と対処法

array_column関数は非常に便利な関数ですが、いくつかの注意点があります。

まず、array_column関数はPHP 5.5.0以降で利用可能な関数なので、それ以前のバージョンでは使用できません。

しかし、PECLのarray_columnパッケージをインストールすることで、PHP 5.4.0以前でもこの関数を使用することができます。

また、array_column関数は、引数に指定した配列が連想配列でないとエラーを出すことがあります。具体的には、配列のキーが整数でない場合や、キーの名前が配列内で一意でない場合にエラーとなります。

このような問題に対処するためには、配列のキーを整数に変換したり、キーの名前を一意にしたりする必要があります。

さらに、array_column関数をマルチディメンショナル配列で使用する場合、指定したカラムが存在しないとエラーを出します。

そのため、カラム名を指定する前に、そのカラムが存在するかどうかを確認する必要があります。

まとめ

以上、PHPのarray_column関数の使い方について詳しく解説してきました。

これらの具体的なコード例を通じて、array_column関数の使い方を理解し、自身のプログラミングに活かしていただければと思います。

初めてPHPを学ぶ人でもこの記事を読むことで、array_column関数の使い方をマスターすることができるでしょう。