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

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

angryTom
angryTom転載
2019-10-16 09:37:162812ブラウズ

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 までご連絡ください。