當數組1的值將會在偶數位置,而數組2會在奇數位置時,如何合併兩個數組?PHP ::當數組1的值將在偶數位置並且數組2將在奇數位置時如何合併2個數組?
實施例:
$arr1=array(11, 34,30);
$arr2=array(12, 666);
$output=array(11, 12, 34, 666,30);
當數組1的值將會在偶數位置,而數組2會在奇數位置時,如何合併兩個數組?PHP ::當數組1的值將在偶數位置並且數組2將在奇數位置時如何合併2個數組?
實施例:
$arr1=array(11, 34,30);
$arr2=array(12, 666);
$output=array(11, 12, 34, 666,30);
這將正常工作,無論這兩個數組的長度,或者它們的鍵(它沒有索引它們):
$result = array();
while(!empty($arr1) || !empty($arr2)) {
if(!empty($arr1)) {
$result[] = array_shift($arr1);
}
if(!empty($arr2)) {
$result[] = array_shift($arr2);
}
}
編輯:我原來的答覆有一個bug;固定的。
+1。我刪除了我的答案,就像你的答案一樣。 – Gaurav 2011-03-07 11:55:01
假定$ ARR1和$ ARR2大小相等的簡單枚舉陣列,或其中$ ARR2僅具有一個元素少於$ ARR1。
$arr1 = array(11, 34);
$arr2 = array(12, 666);
$output = array();
foreach($arr1 as $key => $value) {
$output[] = $value;
if (isset($arr2[$key])) {
$output[] = $arr2[$key];
}
}
通過與更多的項目陣列去,使用循環索引來訪問陣列,並將它們組合成所產生的一個嘀......
$longer = (count($arr1) > count($arr2) ? $arr1 : $arr2);
$result = array();
for ($i = 0; $i < count($longer); $i++) {
$result[] = $arr1[i];
if ($arr2[i]) {
$result[] = $arr2[i];
} else {
$result[] = 0; // no item in arr2 for given index
}
}
試試這個
$arr1=array(11,34,30,35);
$arr2=array(12,666,23);
$odd= array_combine(range(0,2*count($arr1)-1,2), $arr1);
$even = array_combine(range(1,2*count($arr2)-1,2), $arr2);
$output=$odd+$even;
ksort($output);
echo "<pre>";
print_r($output);
回報
Array
(
[0] => 11
[1] => 12
[2] => 34
[3] => 666
[4] => 30
[5] => 23
[6] => 35
)
+!一個聰明的選擇 – 2011-03-07 12:06:27
如果$ arr1和$ arr2中有不同數量的元素會發生什麼情況 – 2011-03-07 11:32:19
重複的[交錯多個數組到單個數組](http://stackoverflow.com/questions/1860490/interleaving-multiple-arrays-into-a-single-array) – 2011-03-07 11:35:34
馬克,請參閱我的編輯輸出 – Yosef 2011-03-07 11:37:21