PHPで多次元配列から指定列を抽出する方法をまとめます。

coldplay.xixi
リリース: 2023-04-09 13:34:01
転載
2888 人が閲覧しました

PHPで多次元配列から指定列を抽出する方法をまとめます。

この記事の例では、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');
ログイン後にコピー

いくつかの方法があります。

1 array_column 関数の方法

PHP の組み込みの array_column() 関数を使用するのが最も簡単な方法ですが、PHP のバージョンが 5.5.0 以降である必要があるという制限があります。メソッド :

$username = array_column($user, 'username');
ログイン後にコピー

2 array_walk 関数メソッド

array_walk() 関数は、ユーザー定義関数を使用して配列内の各要素に対してコールバック処理を実行し、現在の関数:

$username = array();
array_walk($user, function($value, $key) use (&$username){
 $username[] = $value['username'];
});
ログイン後にコピー

3 array_map 関数のメソッド

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;
}
ログイン後にコピー

4 foreach ループ メソッド

foreach ループは上記の方法よりも効率が若干劣りますが、シンプルで理解しやすいです。

$username = array();
foreach ($user as $value) {
 $username[] = $value['username'];
}
ログイン後にコピー

5 array_map のバリアント

メソッドは次のとおりです。これは、$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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート