Слияние массивов PHP однозначно

Поэтому я работаю над небольшими приложениями php, которые объединяют четыре массива. Теперь есть вероятность, что некоторые из возможных массивов будут пустыми. Я попробовал следующее решение, чтобы объединить четыре массива однозначно.

<?php $a = [1,2,3,4,5]; $b = null; $c = [5,4,3,2,1]; $d = [1,2]; $new_array; if(is_array($a) && is_array($b) && is_array($c) && is_array($d)) { $new_array = array_unique(array_merge($a,$b,$c,$d)); }else if(is_array($a) && is_array($b) && is_array($c)) { $new_array = array_unique(array_merge($a,$b,$c)); }else if(is_array($a) && is_array($b)) { $new_array = array_unique(array_merge($a,$b)); }else{ $new_array = $a; } print_r($new_array); ?> 

Вскоре я понял, что мой код сильно дисфункциональен тем, что он не обслуживает все возможные комбинации массивов, исключая нулевые переменные.

Как я могу это решить. Обеспечение объединения всех переменных, которые являются массивами, и тех, которые не отбрасываются. благодаря

как насчет этого? поместив весь массив в массив, чтобы вы могли легко их пропустить, и использовать custom in_array() функцию custom in_array() чтобы проверить, уже ли они уже существуют?

Хорошая вещь в этом способе заключается в том, что он не ограничивает сценарий только четырьмя массивами, поскольку он будет проходить через весь массив, с которым вы собрались.

 $a = [1,2,3,4,5]; $b = null; $c = [5,4,3,2,1]; $d = [1,2]; $array_stack = array($a, $b, $c, $d); $new_array = array(); foreach($array_stack as $stack){ if(!is_array($stack)) continue; foreach($stack as $value){ if(!in_array($value, $new_array)) $new_array[] = $value; } } print_r($new_array); 

может быть, что-то вроде этого:

 <?php $a = [1,2,3,4,5]; $b = null; $c = [5,4,3,2,1]; $d = [1,2]; $new_array; if(is_array($a)) $new_array = $a; if(is_array($b)) $new_array = array_unique(array_merge($new_array,$b)); if(is_array($c)) $new_array = array_unique(array_merge($new_array,$c)); if(is_array($d)) $new_array = array_unique(array_merge($new_array,$d)); ?> 

Старый вопрос, но я все равно дам свой вклад. Более универсальный подход:

 function multiple_array_merge() { $args = func_get_args(); $array = []; foreach ($args as $i) { if (is_array($i)) $array = array_merge($array, $i); } return array_unique($array); } $a = [1, 2, 3, 4, 5]; $b = null; $c = [5, 4, 3, 2, 1]; $d = [1, 2]; $merged = multiple_array_merge($a, $b, $c, $d);