Dalam artikel sebelumnya "Cara membuang elemen kosong atau pendua dalam pembelajaran tatasusunan PHP", kami memperkenalkan kaedah elemen kosong dan pendua dalam tatasusunan, iaitu kaedah memadam elemen kosong dan elemen pendua dalam tatasusunan Mari kita bincangkan secara ringkas tentang kaedah menetapkan semula indeks tatasusunan satu dimensi. Indeks tatasusunan satu dimensi boleh ditetapkan semula, tetapi bagaimana untuk menetapkan semula indeks tatasusunan dua dimensi atau bahkan tatasusunan berbilang dimensi? Mari perkenalkan kaedah di bawah.
→Cadangan berkaitan: 《 Ringkasan siri pembelajaran tatasusunan PHP (terus dikemas kini~)》
Pertama sekali, kita tahu daripada perkara di atas bahawa satu dimensi Jika anda ingin menetapkan semula indeks tatasusunan, ia adalah sangat mudah. Hanya gunakan fungsi array_values($array)
. Fungsi
array_values() adalah untuk mengembalikan nilai semua elemen dalam tatasusunan Ia sangat mudah digunakan Dengan hanya satu parameter yang diperlukan $array
, ia boleh mengembalikan tatasusunan yang mengandungi semua nilai dalam tatasusunan yang diberikan, tetapi nama kunci tidak disimpan. Tatasusunan yang dikembalikan akan dalam bentuk tatasusunan diindeks, dengan indeks tatasusunan bermula pada 0 dan meningkat sebanyak 1.
Kita boleh menggunakan fungsi array_values() untuk menyusun semula tatasusunan dengan subskrip elemen huru-hara, iaitu indeks bermula dari 0 dan meningkat sebanyak 1, fungsi ini bukan sahaja boleh digunakan untuk mengindeks tatasusunan, tetapi juga untuk mengaitkan Array boleh menukar tatasusunan bersekutu menjadi tatasusunan diindeks.
Untuk menetapkan semula indeks tatasusunan berbilang dimensi, anda juga perlu menggunakan fungsi array_values(). Di bawah kami terus memberikan kaedah pelaksanaan:
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; };
Uji, terdapat tatasusunan berbilang dimensi berikut
$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 ], ];
Panggil fungsi reform_keys() untuk menetapkan semula indeks $ tatasusunan pos, dan keluarkan tatasusunan Posted baharu:
$list = reform_keys($post); var_dump($list);
Hasil output ialah:
Ia boleh dilihat bahawa indeks bagi semua peringkat dalam tatasusunan berbilang dimensi $post telah ditetapkan semula dan mula mengira dari 0!
Izinkan saya memperkenalkan kepada anda fungsi yang digunakan di dalamnya:
array_keys($array)
: Dapatkan semua nama kunci dalam tatasusunan $array;
. $keys=implode('', array_keys($array))
$keys
is_numeric($keys)
array_values($array)
array_map('reform_keys', $array)
array_map() mengembalikan tatasusunan Kandungan tatasusunan adalah hasil panggilan balik pada elemen tatasusunan1 dalam tertib indeks (apabila terdapat lebih banyak tatasusunan, unsur tatasusunan juga akan dihantar masuk). Bilangan parameter fungsi panggil balik mesti sepadan dengan bilangan tatasusunan dalam argumen array_map().
Akhir sekali, saya mengesyorkan tutorial video percuma tentang tatasusunan PHP:
Penjelasan video fungsi tatasusunan fungsi PHPAtas ialah kandungan terperinci Pembelajaran tatasusunan PHP: Bagaimana untuk menetapkan semula indeks tatasusunan berbilang dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!