[英]Merge every other array php
陣列一: 1,3,5,7
陣列二: 2,4,6,8
我想要的數組是1,2,3,4,5,6,7,8
我只是用數字作為例子。 如果它只是數字,我可以合並和排序,但他們將是文字。 也許是類似的東西
陣列一: bob,a,awesome
陣列二: is,really,dude
應該讀: bob is a really awesome dude
不確定如何做到這一點。 PHP內置了這樣的東西嗎?
你可以自己寫一個這樣的函數:
function array_merge_alternating($array1, $array2) {
if(count($array1) != count($array2)) {
return false; // Arrays must be the same length
}
$mergedArray = array();
while(count($array1) > 0) {
$mergedArray[] = array_shift($array1);
$mergedArray[] = array_shift($array2);
}
return $mergedArray;
}
此函數需要兩個長度相等的數組並合並它們的值。
如果您不需要交替順序的值,則可以使用array_merge
。 array_merge
會將第二個數組追加到第一個數組,並且不會按照你的要求執行。
試試這個優雅的解決方
function array_alternate($array1, $array2)
{
$result = Array();
array_map(function($item1, $item2) use (&$result)
{
$result[] = $item1;
$result[] = $item2;
}, $array1, $array2);
return $result;
}
此解決方案有效,並且兩個陣列的大小/長度不同並不重要:
function array_merge_alternating($array1, $array2)
{
$mergedArray = array();
while( count($array1) > 0 || count($array2) > 0 )
{
if ( count($array1) > 0 )
$mergedArray[] = array_shift($array1);
if ( count($array2) > 0 )
$mergedArray[] = array_shift($array2);
}
return $mergedArray;
}
試試這個功能:
function arrayMergeX()
{
$arrays = func_get_args();
$arrayCount = count($arrays);
if ( $arrayCount < 0 )
throw new ErrorException('No arguments passed!');
$resArr = array();
$maxLength = count($arrays[0]);
for ( $i=0; $i<$maxLength; $i+=($arrayCount-1) )
{
for ($j=0; $j<$arrayCount; $j++)
{
$resArr[] = $arrays[$j][$i];
}
}
return $resArr;
}
var_dump( arrayMergeX(array(1,3,5,7), array(2,4,6,8)) );
var_dump( arrayMergeX(array('You', 'very'), array('are', 'intelligent.')) );
var_dump( arrayMergeX() );
它適用於可變數量的數組!
住在codepad.org: http://codepad.org/c6ZuldEO
如果數組僅包含數值,則可以使用合並並對數組進行排序。
<?php
$a = array(1,3,5,7);
$b = array(2,4,6,8);
$merged_array = array_merge($a,$b);
sort($merged,SORT_ASC);
?>
否則使用此解決方案。
<?php
function my_merge($array1,$array2)
{
$newarray = array();
foreach($array1 as $key => $val)
{
$newarray[] = $val;
if(count($array2) > 0)
$newarray[] = array_shift($array2)
}
return $newarray;
}
?>
希望這個幫助
期望兩個數組具有相同的長度:
$result = array();
foreach ($array1 as $i => $elem) {
array_push($result, $elem, $array2[$i]);
}
echo join(' ', $result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.