我想將兩個數組合併成幾乎相同的值。如果存在,我總是希望將數組元素插入到組合數組中。 爲:以特定的方式合併兩個數組
$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