Beim Zusammenführen von Arrays mit array_merge() in PHP führen leere Zeichenfolgen oder leere Arrays zu verwirrenden Ergebnissen. Lösung: 1. Verwenden Sie array_filter(), um Nullwerte zu filtern. 2. Verwenden Sie für Fälle, die leere Arrays enthalten, die rekursive Zusammenführungsfunktion array_merge_recursive_distinct(), um eine konsistente Array-Struktur aufrechtzuerhalten.
Array-Zusammenführung beim Umgang mit leeren Arrays in PHP
Wenn in PHP die Funktion array_merge()
zum Zusammenführen von Arrays verwendet wird und eines oder mehrere der Arrays leere Elemente enthalten, Schließlich können die Ergebnisse verwirrend sein. array_merge()
函数合并数组时,如果其中一个或多个数组包含空元素,最终结果可能会令人困惑。
案例 1:包含空字符串的数组合并
$arr1 = [1, 2, 3]; $arr2 = [4, 5, '']; $merged = array_merge($arr1, $arr2); var_dump($merged);
输出:
array(6) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(4) [4] => int(5) [5] => string(0) "" }
如你所见,空字符串被保留在合并后的数组中。
解决方案:使用 array_filter()
过滤空值
要在合并前去除空值,可以使用 array_filter()
函数:
$arr1 = [1, 2, 3]; $arr2 = [4, 5, '']; $arr1 = array_filter($arr1); $arr2 = array_filter($arr2); $merged = array_merge($arr1, $arr2); var_dump($merged);
输出:
array(5) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(4) [4] => int(5) }
空字符串已被过滤,合并后的数组中不包含空值。
案例 2:包含空数组的数组合并
如果数组包含空数组,则合并后可能会意外地产生多维数组:
$arr1 = [1, 2, 3]; $arr2 = [4, 5, []]; $merged = array_merge($arr1, $arr2); var_dump($merged);
输出:
array(6) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(4) [4] => int(5) [5] => array(0) { } }
空数组构成了合并后的数组中的一个元素,导致结果为多维数组。
解决方案:使用递归合并
要解决此问题,可以使用递归合并方法,该方法将空数组视为普通元素进行合并:
function array_merge_recursive_distinct(array &$array1, array &$array2) { $merged = $array1; foreach ($array2 as $key => &$value) { if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { $merged[$key] = array_merge_recursive_distinct($merged[$key], $value); } else { $merged[$key] = $value; } } return $merged; } $arr1 = [1, 2, 3]; $arr2 = [4, 5, []]; $merged = array_merge_recursive_distinct($arr1, $arr2); var_dump($merged);
输出:
array(6) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(4) [4] => int(5) [5] => NULL }
空数组已转换为 NULL
array_filter()
, um Nullwerte zu filtern. 🎜🎜🎜Um Nullwerte vor dem Zusammenführen zu entfernen, können Sie die Funktion array_filter()
verwenden: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜Leere Zeichenfolgen wurden gefiltert und das zusammengeführte Array enthält keine Nullwerte. 🎜🎜🎜Fall 2: Zusammenführen von Arrays, die leere Arrays enthalten 🎜🎜🎜Wenn die Arrays leere Arrays enthalten, kann die Zusammenführung unerwartet zu einem mehrdimensionalen Array führen: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜Die leeren Arrays bilden ein Element des zusammengeführten Arrays , wodurch das Ergebnis ein mehrdimensionales Array ist. 🎜🎜🎜Lösung: Rekursive Zusammenführung verwenden🎜🎜🎜Um dieses Problem zu lösen, können Sie die rekursive Zusammenführungsmethode verwenden, die leere Arrays als normale Elemente zusammenführt: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜Das leere Array wurde in konvertiert NULL
, die zusammengeführte Array-Struktur bleibt konsistent. 🎜Das obige ist der detaillierte Inhalt vonWie gehe ich mit leeren Arrays um, nachdem PHP-Arrays zusammengeführt wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!