所以我正在研究一个结合了四个数组的小型PHP应用程序.现在有可能某些可能的数组将为null.我尝试了以下解决方案来唯一地合并四个数组.
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
我很快意识到我的代码非常不正常,因为它不能满足所有可能的数组组合,同时排除空变量.
我该如何解决这个问题.确保合并所有作为数组的变量,并将其丢弃.谢谢
这个怎么样?将所有数组放在一个数组中,这样你就可以轻松地遍历它们,并使用一个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);
Run Code Online (Sandbox Code Playgroud)