ホームページ > バックエンド開発 > PHPチュートリアル > PHP で多次元配列から指定された列を抽出するメソッドの完全なリスト

PHP で多次元配列から指定された列を抽出するメソッドの完全なリスト

angryTom
リリース: 2023-04-07 17:02:01
転載
2900 人が閲覧しました

PHP で多次元配列から指定された列を抽出するメソッドの完全なリスト

多次元配列の特定の列の抽出は、PHP では非常に一般的な関数です。このため、PHP はバージョン 5.5.0 以降に専用の関数 array_column を追加しました () 。もちろん、PHP バージョンが 5.5.0 より前の場合は、他の方法を使用する必要があります。

たとえば、次の配列の場合:

$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 サイト をご覧ください。

以上がPHP で多次元配列から指定された列を抽出するメソッドの完全なリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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