Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
PHPzasal
2023-04-19 10:07:071240semak imbas

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)
);

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 )

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 )

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!

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