首頁  >  文章  >  後端開發  >  PHP數組學習如何重置多維數組的索引

PHP數組學習如何重置多維數組的索引

青灯夜游
青灯夜游原創
2021-08-27 13:21:122937瀏覽

在先前的文章《PHP數組學習之怎麼去除空白或重複的元素》中,我們介紹了數組去空去重,即刪除數組中的空元素和重複元素的方法,隨便簡單聊了聊重置一維數組索引的方法。一維數組的索引可以重置,那麼二維數組,甚至多維數組的索引要怎麼重置?下面我們來介紹一下方法。

→相關推薦:PHP陣列學習系列大匯總(持續更新~)

首先從上文我們知道,一維陣列想要重置索引,非常簡單,直接利用array_values($array)函數就行。

array_values()函數的作用是傳回數組中所有元素的值,使用起來非常簡單,只有一個必選參數$array,就可以傳回一個包含給定數組中所有值的數組,但不保留鍵名。被傳回的陣列將使用索引數組的形式,數組的索引從 0 開始且以 1 遞增。

我們可以利用array_values()函數將元素下標混亂的數組重新理順,即索引從0 開始且以1 遞增;該函數不僅可以用於索引數組,也可用於關聯數組,能將關聯數組轉換為索引數組。

而重置多維數組的索引,也需要利用這個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陣列中所有鍵名;

  • $keys=implode('', array_keys($array)):將鍵名陣列中的元素拼接在一起,傳回字串 $keys

  • is_numeric($keys):偵測變數$keys是否為數字或數字字串。

  • array_values($array):取得全部數值,即重設索引;

  • ##array_map( 'reform_keys', $array):為$array陣列的每個元素套用回呼函數reform_keys()。

    array_map() 傳回一個 array,當陣列內容為 array1 的元素依索引順序為參數呼叫 callback 後的結果(有較多陣列時,也會傳入 arrays 的元素)。 callback 函數形參的數量必須符合 array_map() 實參中陣列的數量。


好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →

php影片教學

最後推薦給大家一個PHP陣列的免費影片教學:

PHP函數之array陣列函數影片講解,快來學習吧!

以上是PHP數組學習如何重置多維數組的索引的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn