我想要将两个数组组合成几乎相同的值。我总是希望将数组元素插入到组合数组中(如果存在)。 对于:
$b = array("a","a","b","a","a","x")
$a = array("a","a","b","x","a","a")
我想要输出:
$ab = array ("a","a","b","x","a","a","x");
功能array_merge
或array_combine
不起作用。
答案 0 :(得分:1)
我可能会尝试使用array_splice()
。您必须在不同的阵列上尝试此操作,以查看它是否适用于所有场景:
<?php
$b = array("a","a","b","a","a","x");
$a = array("a","a","b","x","a","a");
function iterateToEven(&$a,&$b)
{
$c = count($a);
for($i = 0; $i < $c; $i++) {
if(isset($a[$i])){
if(isset($b[$i])) {
if($a[$i] == $b[$i])
continue;
else {
if(isset($b[$i+1]) && ($b[$i+1] == $a[$i]))
array_splice($a,$i,0,$b[$i]);
elseif(isset($a[$i+1]) && ($a[$i+1] == $b[$i]))
array_splice($b,$i,0,$a[$i]);
else
array_splice($a,$i,0,$b[$i]);
}
}
}
}
if(end($a) != end($b)) {
if(count($a) == count($b))
iterateToEven($a,$b);
}
return (count($a) > count($b))? $a : $b;
}
$d = iterateToEven($a,$b);
print_r($d);
给出输出:
Array
(
[0] => a
[1] => a
[2] => b
[3] => x
[4] => a
[5] => a
[6] => x
)
有一点需要注意,这种方法会修改$a
&amp;在执行此函数的过程中$b
数组,如果您希望保持$a
和$b
不变,则可以将函数应用程序包装在另一个函数中并返回$d
。
答案 1 :(得分:0)
我使用了以下代码
$b = array("a","a","b","a","a","x");
$a = array("a","a","b","x","a","a");
$list = []; //empty array
for ($i=0; $i < count($a) ; $i++) {
for ($j=$i; $j <=$i ; $j++) {
if ($i== $j) {
$list[] = $a[$i]; //if values are equal, list[] gets array a value
}
else{
$list[] = $b[$j];
}
}
}
return $list;
结果是:["a","a","b","x","a","a"]