Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php
Dalam proses membangunkan menggunakan PHP, kami biasanya menghadapi keperluan untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi. Keperluan ini sangat biasa dalam pembangunan sebenar Sebagai contoh, kita perlu memproses data dalam pangkalan data Untuk beberapa data yang perlu dikira, tatasusunan dua dimensi yang ditanya biasanya ditukar kepada tatasusunan satu dimensi, yang memudahkan pengiraan kami. .
Dalam PHP, kaedah menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi adalah sangat mudah dan boleh dilakukan menggunakan fungsi array_column(). Mari kita lihat dengan lebih dekat cara menggunakan fungsi array_column().
Penggunaan asas fungsi array_column()
Sintaks asas fungsi array_column() adalah seperti berikut:
array array_column( array $input, mixed $column_key [, mixed $index_key ] )
Fungsi ini menerima tiga parameter, di mana parameter $input menentukan tatasusunan yang hendak ditukar, parameter $column_key menentukan nama lajur atau nama kunci untuk ditukar kepada tatasusunan satu dimensi, dan parameter $index_key adalah pilihan dan digunakan untuk mewakili Nama kunci dalam tatasusunan baru Jika tidak dinyatakan, indeks berangka digunakan.
Sebagai contoh, kita mempunyai tatasusunan dua dimensi seperti berikut:
$users = array(
array('id' => 1, 'name' => 'Tom', 'age' => 20), array('id' => 2, 'name' => 'Jerry', 'age' => 18), array('id' => 3, 'name' => 'Lucy', 'age' => 22)
);
Kita boleh menggunakan array_column() berfungsi untuk menukarnya menjadi tatasusunan satu dimensi:
$names = array_column($users, 'name');
Hasil yang ditukar ialah:
array(' Tom', 'Jerry', 'Lucy')
Dalam contoh di atas, kami menukar medan nama dalam tatasusunan $users kepada tatasusunan satu dimensi baharu.
Dalam pembangunan sebenar, kita mungkin perlu menukar berbilang medan kepada tatasusunan satu dimensi pada masa yang sama Dalam kes ini, kita boleh menukar berbilang medan kepada tatasusunan satu dimensi masing-masing, dan kemudian menyambungkannya. Sebagai contoh, kod berikut akan menukar kedua-dua medan nama dan umur kepada tatasusunan satu dimensi:
$names = array_column($users, 'name');
$ages = array_column($users, 'umur') ;
$info = array_merge($nama, $ages);
Hasil yang ditukar ialah:
array('Tom', 'Jerry', 'Lucy' , 20, 18, 22)
Dalam contoh di atas, kami menggabungkan tatasusunan $name dan $ages untuk mendapatkan tatasusunan satu dimensi baharu.
Penggunaan lanjutan fungsi array_column()
Selain penggunaan asas yang diperkenalkan di atas, fungsi array_column() juga mempunyai beberapa penggunaan lanjutan, mari perkenalkan satu persatu di bawah.
Kadangkala kita perlu menggunakan medan dalam tatasusunan asal sebagai indeks tatasusunan baharu Dalam kes ini, kita boleh memanggil array_column(. ) fungsi, tentukan parameter ketiga $index_key sebagai nama medan dalam tatasusunan asal. Contohnya, untuk menggunakan medan id dalam tatasusunan $users di atas sebagai indeks tatasusunan baharu, anda boleh mengendalikan seperti berikut:
$users = array(
array('id' => 1, 'name' => 'Tom', 'age' => 20), array('id' => 2, 'name' => 'Jerry', 'age' => 18), array('id' => 3, 'name' => 'Lucy', 'age' => 22)
);
$names = array_column ($users, 'name', 'id');
Hasil yang ditukar ialah:
array(1 => 'Tom', 2 => ; 'Jerry', 3 => 'Lucy')
Seperti yang anda lihat, nama kunci tatasusunan baharu ialah medan id dalam tatasusunan asal.
Dalam pembangunan sebenar, kita mungkin menghadapi situasi di mana kita perlu memproses tatasusunan berbilang dimensi Dalam kes ini, kita boleh menggunakan peta_tatasusunan () fungsi untuk menukar setiap Tatasusunan dua dimensi ditukar kepada tatasusunan satu dimensi, dan kemudian fungsi array_merge() digunakan untuk menyatukannya untuk mendapatkan tatasusunan satu dimensi yang baharu. Contohnya:
$users = array(
array('id' => 1, 'name' => array('first' => 'Tom', 'last' => 'Smith'), 'age' => 20), array('id' => 2, 'name' => array('first' => 'Jerry', 'last' => 'Brown'), 'age' => 18), array('id' => 3, 'name' => array('first' => 'Lucy', 'last' => 'Johnson'), 'age' => 22)
);
$names = array_map(function($user) {
return $user['name']['first'] . ' ' . $user['name']['last'];
}, $ users);
$ages = array_column($users, 'age');
$info = array_merge($names, $ages);
Hasil yang ditukar ialah:
array('Tom Smith', 'Jerry Brown', 'Lucy Johnson', 20, 18, 22)
Seperti yang anda lihat, apabila kita menukar medan nama dalam tatasusunan $users menjadi satu tatasusunan -dimensi, Anda perlu menggunakan fungsi array_map() untuk menukar setiap tatasusunan dua dimensi kepada tatasusunan satu dimensi, dan kemudian gunakan fungsi array_merge() untuk menyambungnya bersama-sama.
Ringkasan
Melalui pengenalan artikel ini, kita dapat melihat bahawa menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi adalah sangat mudah dalam PHP, hanya gunakan fungsi array_column(). Jika anda perlu menukar berbilang medan kepada tatasusunan satu dimensi, anda boleh menggunakan fungsi array_column() beberapa kali dan kemudian sambungkannya bersama-sama. Jika anda perlu mengindeks medan dalam tatasusunan asal, anda boleh menentukan parameter ketiga apabila memanggil fungsi array_column() Jika anda perlu memproses tatasusunan berbilang dimensi, anda boleh menggunakan fungsi array_map() untuk menukar setiap dua dimensi. tatasusunan kepada tatasusunan satu dimensi dan kemudian sambungkannya bersama-sama menggunakan fungsi array_merge().
Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!