Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php

Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php

PHPz
PHPzasal
2023-04-23 16:47:001253semak imbas

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.

  1. Tatasusunan asal sebagai indeks

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.

  1. Memproses tatasusunan berbilang dimensi

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn