Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Teknik yang Boleh Saya Gunakan untuk Menggabungkan Tatasusunan Bersekutu dan Menambah Lajur Hilang dengan Nilai Lalai?

Apakah Teknik yang Boleh Saya Gunakan untuk Menggabungkan Tatasusunan Bersekutu dan Menambah Lajur Hilang dengan Nilai Lalai?

Barbara Streisand
Barbara Streisandasal
2024-10-20 21:42:29562semak imbas

What Techniques Can I Use to Merge Associative Arrays and Add Missing Columns with Default Values?

Menggabungkan Tatasusunan Bersekutu dan menambahkan Lajur Hilang dengan Nilai Lalai

Menggabungkan berbilang tatasusunan bersekutu sambil mengekalkan semua kunci unik dan menambah lajur yang hilang dengan nilai lalai boleh dicapai dengan menggunakan pelbagai teknik. Mari kita terokai dua kaedah untuk mencapai ini:

Kaedah 1: Menggunakan array_merge dan RecursiveIterationIterator

<code class="php">$a = array('a' => 'some value', 'b' => 'some value', 'c' => 'some value');
$b = array('a' => 'another value', 'd' => 'another value', 'e' => 'another value', 'f' => 'another value');
$c = array('b' => 'some more value', 'x' => 'some more value', 'y' => 'some more value', 'z' => 'some more value');

$d = array($a, $b, $c);
$keys = array();

foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) {
    $keys[$key] = '';
}

$data = array();
foreach ($d as $values) {
    $data[] = array_merge($keys, $values);
}

echo '<pre class="brush:php;toolbar:false">';
print_r($data);</code>

Pendekatan ini mula-mula menggunakan RecursiveIteratorIterator bersama-sama dengan array_merge untuk mengenal pasti semua kunci unik dalam setiap tatasusunan bersekutu. Ia kemudiannya memulakan tatasusunan kosong ($kunci) dengan kunci yang dikenal pasti. Selepas itu, ia berulang melalui setiap tatasusunan dalam $d, menggabungkan tatasusunan $keys dengan setiap nilai tatasusunan untuk mendapatkan format yang diingini.

Kaedah 2: Menggunakan array_combine dan array_map

<code class="php">$keys = array_keys(call_user_func_array('array_merge', $d));
$key_pair = array_combine($keys, array_fill(0, count($keys), null));
$values = array_map(function ($e) use ($key_pair) {
    return array_merge($key_pair, $e);
}, $d);</code>

Pendekatan ini menggunakan array_keys untuk menentukan penyatuan semua kunci unik dalam tatasusunan yang digabungkan. Ia kemudiannya menggunakan array_combine untuk mencipta pasangan nilai kunci di mana kunci adalah kunci unik, dan nilainya adalah nol. Akhir sekali, array_map digunakan untuk lelaran melalui $d, menggabungkan pasangan nilai kunci ($key_pair) dengan setiap tatasusunan bersekutu dalam $d, menghasilkan format yang diingini.

Atas ialah kandungan terperinci Apakah Teknik yang Boleh Saya Gunakan untuk Menggabungkan Tatasusunan Bersekutu dan Menambah Lajur Hilang dengan Nilai Lalai?. 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