首頁  >  文章  >  後端開發  >  PHP數組合併時,如何實現不同資料型別之間的合併?

PHP數組合併時,如何實現不同資料型別之間的合併?

王林
王林原創
2024-04-28 12:06:01364瀏覽

對於PHP 中不同資料類型數組的合併,有三種常用方法:1)array_merge_recursive,遞歸合併,保留子數組;2)PHP 7.4 的spread operator,展開數組;3)自訂合併函數,提供精細控制。

PHP數組合併時,如何實現不同資料型別之間的合併?

不同資料型別間的PHP 數組合併

在PHP 中,合併陣列時常會遇到不同資料型別的數據,為了實現這些數據類型的完美合併,這裡介紹三種常見的方法,並提供實戰案例進行演示。

1. array_merge_recursive

此函數可遞歸合併數組,將子數組以數組的形式合併,而不會遺失子數組的資料。

<?php
$array1 = ['a' => 1, 'b' => [3, 4], 'c' => ['d' => 6]];
$array2 = ['b' => [1, 2], 'e' => 5];

$mergedArray = array_merge_recursive($array1, $array2);

print_r($mergedArray); // 输出:
// Array
// (
//     [a] => 1
//     [b] => Array
//         (
//             [0] => 3
//             [1] => 4
//             [2] => 1
//             [3] => 2
//         )
//     [c] => Array
//         (
//             [d] => 6
//         )
//     [e] => 5
// )
?>

2. spread operator(PHP 7.4 )

PHP 7.4 引入了 spread operator,它允許在陣列中展開另一個陣列。

<?php
$array1 = ['a' => 1, 'b' => [3, 4]];
$array2 = ['b' => [1, 2], 'e' => 5];

$mergedArray = [...$array1, ...$array2];

print_r($mergedArray); // 输出:
// Array
// (
//     [0] => 1
//     [1] => 3
//     [2] => 4
//     [3] => 1
//     [4] => 2
//     [5] => 5
// )
?>

3. 自訂合併函數

如果你需要對合併過程進行更精細的控制,可以寫一個自訂的合併函數。

<?php
function custom_array_merge(array $array1, array $array2): array
{
    foreach ($array2 as $key => $value) {
        if (isset($array1[$key]) && is_array($array1[$key]) && is_array($value)) {
            $array1[$key] = custom_array_merge($array1[$key], $value);
        } else {
            $array1[$key] = $value;
        }
    }

    return $array1;
}

$array1 = ['a' => 1, 'b' => [3, 4], 'c' => ['d' => 6]];
$array2 = ['b' => [1, 2], 'e' => 5];

$mergedArray = custom_array_merge($array1, $array2);

print_r($mergedArray); // 输出:
// Array
// (
//     [a] => 1
//     [b] => Array
//         (
//             [0] => 3
//             [1] => 4
//             [2] => 1
//             [3] => 2
//         )
//     [c] => Array
//         (
//             [d] => 6
//         )
//     [e] => 5
// )
?>

以上是PHP數組合併時,如何實現不同資料型別之間的合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn