我想将两个数组合并成几乎相同的值。如果存在,我总是希望将数组元素插入到组合数组中。 为:以特定的方式合并两个数组
$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
不起作用。
我想将两个数组合并成几乎相同的值。如果存在,我总是希望将数组元素插入到组合数组中。 为:以特定的方式合并两个数组
$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
不起作用。
我用下面的代码
$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"]
结果应该是'[“a”,“a”,“b”,“x”,“a”,“a”,“x”]'。在结尾处有一个'x'缺失... –
@MoeJoe我很想知道你是否在其他阵列上试过我的答案? – Rasclatt
我也许会尝试使用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
& $b
阵列在执行此功能的过程中,如果要保持$a
和$b
的完整性,可以将函数应用程序包装到另一个函数中,并返回$d
。
你可以扩展一下你的逻辑是什么? – sidyll
我有一个数组,我以两种不同的方式操作,因此在最后得到两个分离的数组,并且我想再次将它粘合到一个数组中。 –
好的,但加入它们后面的逻辑是什么? “如果数组元素存在,将数组元素插入数组”意味着什么?存在于什么?哪一个插入其中? – sidyll