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

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

PHPz
Lepaskan: 2023-04-19 11:09:59
asal
1316 orang telah melayarinya

Dalam PHP, tatasusunan berbilang dimensi merujuk kepada struktur tatasusunan yang mengandungi tatasusunan lain atau berbilang, seperti:

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);
Salin selepas log masuk

Ini ialah tatasusunan dua dimensi yang mengandungi tiga elemen, setiap satu Unsur ialah setiap satu subarray yang mengandungi dua pasangan nilai kunci: "nama" dan "umur". Jika anda ingin menukar tatasusunan dua dimensi ini kepada tatasusunan satu dimensi, anda boleh menggunakan beberapa fungsi dalam PHP untuk mencapainya.

Kaedah 1: Gunakan fungsi array_column()

Fungsi array_column() PHP boleh mengekstrak nilai yang sepadan dengan kunci yang ditentukan bagi setiap elemen dalam tatasusunan dan mengembalikan tatasusunan baharu yang mengandungi nilai ini. . Jika kunci yang ditentukan tidak wujud, elemen itu diabaikan. Kita boleh mengekstrak nilai yang sepadan dengan kekunci "nama" semua elemen dalam tatasusunan dua dimensi dan mendapatkan tatasusunan satu dimensi yang mengandungi 3 elemen:

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$names = array_column($array, 'name');
print_r($names);  // 输出:Array ( [0] => John [1] => Mary [2] => Mark )
Salin selepas log masuk

Kaedah 2: Gunakan array_reduce( ) fungsi

Fungsi array_reduce() PHP boleh mengulang tatasusunan mengikut peraturan fungsi panggil balik untuk menghasilkan nilai akhir. Kita boleh menggunakan fungsi ini untuk menggabungkan subarray setiap elemen dalam tatasusunan dua dimensi ke dalam tatasusunan satu dimensi:

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$flatten = array_reduce($array, function($carry, $item) {
  return array_merge($carry, $item);
}, array());
print_r($flatten);  // 输出:Array ( [name] => Mark [age] => 30 )
Salin selepas log masuk

Dalam kod di atas, fungsi array_reduce() menerima fungsi panggil balik dan nilai pemula. Parameter $carry bagi fungsi panggil balik mewakili hasil semasa, dan $item mewakili nilai elemen semasa. Nilai awal ialah tatasusunan kosong, yang bermaksud tatasusunan hasil akhir memulakan pemprosesan berulang dengan tatasusunan kosong sebagai nilai awal. Fungsi array_merge() digunakan dalam fungsi panggil balik untuk menggabungkan subarray elemen semasa dan tatasusunan hasil sebelumnya.

Perlu diambil perhatian bahawa jika setiap elemen dalam tatasusunan dua dimensi mempunyai bilangan pasangan nilai kunci yang berbeza, kaedah 2 di atas hanya boleh mendapatkan semua pasangan nilai kunci bagi elemen terakhir. Dalam situasi yang lebih ketat, subarray boleh disahkan sebelum menggelung untuk mengelakkan kehilangan data.

Di atas ialah dua kaedah untuk menukar tatasusunan berbilang dimensi PHP kepada tatasusunan satu dimensi. Memilih kaedah yang sesuai mengikut peristiwa tertentu dan struktur data boleh meningkatkan kecekapan dan kebolehbacaan kod.

Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan