合并其他数组php


Merge every other array php

数组1:1,3,5,7数组二:2,4,6,8

我想要的数组是1,2,3,4,5,6,7,8

我只是用数字作为例子。如果只是数字,我可以合并和排序,但它们将是单词。比如

数组1: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_mergearray_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() );

它适用于可变数量的数组!

Live on 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);