什么是在PHP中组合这两个数组的最佳方法

时间:2013-12-30 20:16:52

标签: php arrays sorting

不确定如何解释清楚

我有两个数组,就像这样

$array1 = array('A1', 'A2', 'A3');
$array2 = array('B1', 'B2', 'B3');

我想通过在2个数组之间交替来创建一个数组..类似这样的

array('A1', 'B1', 'A2', 'B2', 'A3', 'B3');

还有什么叫做这种排序?

5 个答案:

答案 0 :(得分:1)

$max = max(count($array1), count($array2));
$result = array();
for ($i = 0; $i < $max; $i++) {
    if (count($array1) > $i) {
        $result[] = $array1[$i];
    }
    if (count($array2) > $i) {
        $result[] = $array2[$i];
    }
}

答案 1 :(得分:0)

使用array_merge()

$result = array_merge($array1, $array2);

答案 2 :(得分:0)

假设数组长度相等(count($array1) == count($array2)

// Interleave elements from $array1 and $array2 into $result
$result = array();
for ($i = 0; $i < count($array1); $i++) {
    $result[] = $array1[$i];
    $result[] = $array2[$i];
}
var_dump($result);

答案 3 :(得分:0)

没有标准的PHP函数来执行您的要求。最接近的是:

<?php $array_merged = array_merge($array1, $array2, ...); ?>

以下是适合您的自定义功能:

<?php

        function array_merge_zipped($array_a, $array_b){

            $zipped = array();

            if (is_array($array_a) && is_array($array_b)){

                $a = 0;
                foreach ($array_a as $value){ $zipped[$a] = $value; $a += 2; }

                $b = 1;
                foreach ($array_b as $value){ $zipped[$b] = $value; $b += 2; }

            }

            return $zipped;

        }

?>

答案 4 :(得分:0)

$array1 = array('A1', 'A2', 'A3');
$array2 = array('B1', 'B2', 'B3');

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($array1));
$mi->attachIterator(new ArrayIterator($array2));
$newArray = array();
foreach($mi as $details) {
    $newArray[] = $details[0];
    $newArray[] = $details[1];
}