Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menggabungkan Tatasusunan Bersekutu dengan Lajur yang Hilang dan Menyediakan Nilai Lalai?

Bagaimana untuk Menggabungkan Tatasusunan Bersekutu dengan Lajur yang Hilang dan Menyediakan Nilai Lalai?

Barbara Streisand
Barbara Streisandasal
2024-10-20 21:40:02644semak imbas

How to Merge Associative Arrays with Missing Columns and Provide Default Values?

Menggabungkan Tatasusunan Bersekutu dengan Lajur Yang Hilang dan Nilai Lalai

Memandangkan tatasusunan tatasusunan bersekutu, tugasnya adalah untuk menggabungkannya, menggabungkan kekunci tatasusunan dan mengisi lajur yang tiada dengan nilai lalai.

<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);</code>
var_export($d)

akan mengeluarkan:

array (
  0 =>
  array (
    'a' => 'some value',
    'b' => 'some value',
    'c' => 'some value',
  ),
  1 =>
  array (
    'a' => 'another value',
    'd' => 'another value',
    'e' => 'another value',
    'f' => 'another value',
  ),
  2 =>
  array (
    'b' => 'some more value',
    'x' => 'some more value',
    'y' => 'some more value',
    'z' => 'some more value',
  ),
)

Output yang dikehendaki ialah:

Array
(
    [0] => Array
        (
            [a] => some value
            [b] => some value
            [c] => some value
            [d] =>
            [e] =>
            [f] =>
            [x] =>
            [y] =>
            [z] =>
        )

    [1] => Array
        (
            [a] => another value
            [b] =>
            [c] =>
            [d] => another value
            [e] => another value
            [f] => another value
            [x] =>
            [y] =>
            [z] =>
        )

    [2] => Array
        (
            [a] =>
            [b] => some more value
            [c] =>
            [d] =>
            [e] =>
            [f] =>
            [x] => some more value
            [y] => some more value
            [z] => some more value
        )
)

Untuk mencapai ini, array_merge() boleh digunakan.

<code class="php">$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>

Kaedah alternatif ialah mencipta nilai pasangan utama dan kemudian memetakan setiap $d dan bergabung.

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

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Tatasusunan Bersekutu dengan Lajur yang Hilang dan Menyediakan 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