関数・クラス解説

array_column

version:PHP 5 >= 5.5.0, PHP 7 (公式)

入力配列から単一のカラムの値を返す

公式リファレンス

書式

array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] ) : array

説明

array_column() は、 配列 input の中から column_key で指定した単一のカラムの値を返します。 オプションで index_key も指定できます。 これを指定すると、 入力配列内のカラム index_key の値をキーとし、 カラム column_key を値とした配列が返されます。

パラメータ

input
値を取り出したい多次元配列 (あるいはオブジェクトの配列)。 オブジェクトの配列を指定した場合は、public プロパティはそのまま取得できます。 protected や private なプロパティを取得したい場合は、そのクラスがマジックメソッド __get() および __isset() を実装している必要があります。
column_key
値を返したいカラム。 取得したいカラムの番号を整数値で指定することもできるし、 連想配列のキーやプロパティの名前を指定することもできます。 NULL を指定すると、配列やオブジェクト全体を返します (index_key との組み合わせで、配列の並べ替えをするときに便利です)。
index_key
返す配列のインデックス/キーとして使うカラム。 カラム番号を表す整数値、あるいはキーの名前を表す文字列になります。 この値は、いつものように配列のキーとして キャストされます。 (しかし、文字列への変換をサポートしているオブジェクトも許可されます)

返値

入力配列の単一のカラムを表す値の配列を返します。

更新履歴

バージョン 説明
7.0.0 input にオブジェクトの配列を渡せるようになりました。

サンプル

例1 レコードセットからのファーストネームの取得

// データベースから返ってきたレコードセットの例 $records = array(     array(         'id' => 2135,         'first_name' => 'John',         'last_name' => 'Doe',     ),     array(         'id' => 3245,         'first_name' => 'Sally',         'last_name' => 'Smith',     ),     array(         'id' => 5342,         'first_name' => 'Jane',         'last_name' => 'Jones',     ),     array(         'id' => 5623,         'first_name' => 'Peter',         'last_name' => 'Doe',     ) );   $first_names = array_column($records, 'first_name'); print_r($first_names);

上の例の出力は以下となります。

Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )

例2 レコードセットから姓を取得し、"id"で並べ替える例

// 先ほどの例と同じ $records 配列を使います $last_names = array_column($records, 'last_name', 'id'); print_r($last_names);

上の例の出力は以下となります。

Array ( [2135] => Doe [3245] => Smith [5342] => Jones [5623] => Doe )

例3 オブジェクトの public プロパティ "username" からユーザー名を取得する例

class User {     public $username;     public function __construct(string $username)     {         $this->username = $username;     } } $users = [     new User('user 1'),     new User('user 2'),     new User('user 3'), ]; print_r(array_column($users, 'username'));

上の例の出力は以下となります。

Array ( [0] => user 1 [1] => user 2 [2] => user 3 )

例4 オブジェクトの private プロパティ "name" から、マジックメソッド __get() を使って名前を取得する例

class Person {     private $name;     public function __construct(string $name)     {         $this->name = $name;     }     public function __get($prop)     {         return $this->$prop;     }     public function __isset($prop) : bool     {         return isset($this->$prop);     } } $people = [     new Person('Fred'),     new Person('Jane'),     new Person('John'), ]; print_r(array_column($people, 'name'));

上の例の出力は以下となります。

Array ( [0] => Fred [1] => Jane [2] => John ) __isset() が用意されていなければ、空の配列が返されます。

参考

  • » PHP 5.5 より前のバージョンにおける、ユーザー側での実装の推奨例
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール