ホームページ >バックエンド開発 >PHPの問題 >PHP 配列の学習: 多次元配列のインデックスをリセットする方法

PHP 配列の学習: 多次元配列のインデックスをリセットする方法

青灯夜游
青灯夜游オリジナル
2021-08-27 13:21:123030ブラウズ

前回の記事「PHP配列学習:空要素や重複要素を削除する方法」では、配列内の空要素や重複要素を削除する方法、つまり空要素と重複要素を削除する方法を紹介しました。配列内の重複要素 1 次元配列のインデックスをリセットする方法について簡単に説明します。 1 次元配列のインデックスはリセットできますが、2 次元配列や多次元配列のインデックスをリセットするにはどうすればよいでしょうか?以下にその方法を紹介しましょう。

→関連する推奨事項: PHP 配列学習シリーズの概要 (継続的に更新されます~)>>

まず、上記のことから次のことがわかります。 1 次元 配列のインデックスをリセットしたい場合は、array_values($array) 関数を使用するだけで非常に簡単です。

array_values() 関数は、配列内のすべての要素の値を返します。使い方は非常に簡単です。必須パラメータ $array を 1 つだけ使用すると、値を返すことができます指定された配列内のすべての要素を含む値の配列ですが、キー名は含まれません。返される配列はインデックス付き配列の形式で、配列インデックスは 0 から始まり 1 ずつ増加します。

array_values() 関数を使用すると、カオス要素の添字を使用して配列を再配置できます。つまり、インデックスは 0 から始まり 1 ずつ増加します。この関数は、配列のインデックス付けに使用できるだけでなく、 Array を関連付けることで、連想配列をインデックス付き配列に変換することもできます。

多次元配列のインデックスをリセットするには、array_values() 関数も使用する必要があります。以下に実装方法を直接示します。

function reform_keys($array){
    if(!is_array($array)){
        return $array;
    }
    $keys = implode('', array_keys($array));
    if(is_numeric($keys)){
        $array = array_values($array);
    }
    $array = array_map('reform_keys', $array);
    return $array;
};

テストしてください。次のような多次元配列があります。

$post = [
    0 => [
        'title' => 'xxx联票',
        'price' => 368.00,
        'items' => [
            '33' => [
                'scenic_id' => 33,
                'products' => [
                    'goods_id' => 13
                ]
            ],
            '1500' => [
                'scenic_id' => 1500,
                'products' => [
                    'goods_id' => 57
                ]
            ],
        ],
        'tickets' => 9
    ],
    10 => [
        'title' => 'zzz联票',
        'price' => 500.00,
        'items' => [
            '157' => [
                'scenic_id' => 157,
                'products' => [
                    'goods_id' => 77
                ],
                'attr' => [
                    '50' => [
                        'item' => '午场'
                    ],
                    '55' => [
                        'item' => '可退'
                    ]
                ]
            ],
            '19' => [
                'scenic_id' => 19,
                'products' => [
                    'goods_id' => 87
                ]
            ]
        ],
        'tickets' => 3
    ],
];

Reform_keys() 関数を呼び出して、$post 配列のインデックスをリセットします。リセット配列を出力します:

$list = reform_keys($post);
var_dump($list);

出力結果は次のとおりです:

PHP 配列の学習: 多次元配列のインデックスをリセットする方法

多次元のすべてのレベルのインデックスが確認できます。配列 $post がリセットされ、0 から始まります。カウントが始まります。

その中で使用されている関数を紹介します:

  • array_keys($array): $array 内のすべてのキー名を取得します。 array;

  • $keys=implode('', array_keys($array)): キー配列内の要素を結合し、文字列を返します $keys

  • is_numeric($keys): 変数 $keys が数値か数値文字列かを確認します。

  • array_values($array): すべての値を取得、つまりインデックスをリセットします;

  • ##array_map ( 'reform_keys', $array): コールバック関数 Reform_keys() を $array 配列の各要素に適用します。

    array_map() は配列を返します。配列の内容は、array1 の要素と、パラメータのコールバックをインデックス順に呼び出した結果です (さらに多くの配列がある場合は、配列の要素も渡されます)で)。コールバック関数のパラメータの数は、array_map() 引数内の配列の数と一致する必要があります。


わかりました。これですべてです。他に知りたいことがあれば、これをクリックしてください。 → →

php ビデオ チュートリアル

最後に、PHP 配列に関する無料のビデオ チュートリアルをお勧めします。

PHP 関数 配列 配列関数のビデオ説明、ぜひ学んでください。

以上がPHP 配列の学習: 多次元配列のインデックスをリセットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。