この記事の例では、PHP で多次元配列の指定された列を抽出する方法を説明します。
PHP では多次元配列の特定の列を抽出する機能がよく使われるため、PHP バージョン 5.5 以降では専用の機能が追加されました。 0 配列列()。もちろん、PHP バージョンが 5.5.0 より前の場合は、他の方法を使用する必要があります。
関連する学習の推奨事項: php プログラミング (ビデオ)
たとえば、次の配列の場合:
$user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username' => 'a2'), '2' => array('id' => 102, 'username' => 'a3'), '3' => array('id' => 103, 'username' => 'a4'), '4' => array('id' => 104, 'username' => 'a5'), );
usename 列を抽出して次のように変換したいと考えています。
$username = array('a1', 'a2', 'a3', 'a4', 'a5');
いくつかの方法があります。
PHP の組み込みの array_column() 関数を使用するのが最も簡単な方法ですが、PHP のバージョンが 5.5.0 以降である必要があるという制限があります。メソッド :
$username = array_column($user, 'username');
array_walk() 関数は、ユーザー定義関数を使用して配列内の各要素に対してコールバック処理を実行し、現在の関数:
$username = array(); array_walk($user, function($value, $key) use (&$username){ $username[] = $value['username']; });
array_map() 関数は array_walk() に似ており、指定された配列のセルにコールバック関数を適用します。
$username = array(); array_map(function($value) use (&$username){ $username[] = $value['username']; }, $user);
実際の使用では、array_map() を使用して、PHP の組み込みの array_column() と同じ機能を持つ関数を作成できます。
/** * 获取二维数组指定的一列,并以一维数组格式返回 * 作用和PHP5.5.0中的array_column()函数一样 * @param $input array 需要取出数组列的多维数组(或结果集) * @param $column_key string 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组 * @param $index_key string 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。 * @return array|null */ function array_column($input, $column_key, $index_key = null) { $arr = array_map(function($d) use ($column_key, $index_key) { if (!isset($d[$column_key])) { return null; } if ($index_key !== null) { return array($d[$index_key] => $d[$column_key]); } return $d[$column_key]; }, $input); if ($index_key !== null) { $tmp = array(); foreach ($arr as $ar) { $tmp[key($ar)] = current($ar); } $arr = $tmp; } return $arr; }
foreach ループは上記の方法よりも効率が若干劣りますが、シンプルで理解しやすいです。
$username = array(); foreach ($user as $value) { $username[] = $value['username']; }
メソッドは次のとおりです。これは、$user 配列の各値の開始値を削除し、削除された値を新しい配列 。次のように、新しい配列 $username のキーは元の配列 $user のキーのままであることに注意してください。
$username = array_map('array_shift', $user);
注: この関数は、username 列ではなく、$user の id 列を取得します。
さらに、2 次元配列の各項目の開始列または終了列を取得する必要がある場合は、次のようにすることもできます:
$username = array_map('reset', $user); $username = array_map('end', $user);
これら 3 つのバリアントの効果メソッドは比較的限られており、最初の列のみを取得します。最初の列または最後の列には便利ですが、複雑な配列で役割を果たすのは困難です。
関連する推奨事項: プログラミング ビデオ コース
以上がPHPで多次元配列から指定列を抽出する方法をまとめます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。