将数据从多个阵列合并到一个阵列

时间:2018-10-09 15:53:27

标签: php

我编写了一个脚本,将来自多个数组的结果平均合并。该脚本运行良好,但我想更轻松地实现。我对php编程的了解很差。我对经验丰富的程序员有一个疑问,您是否知道如何使用更好的解决方案来获得相同的结果?

我的代码:

<?php
$a = array('a','a','a','a','a','a','a','a');
$b = array('b','b','b','b','b','b','b','b');
$c = array('c','c','c','c','c','c','c','c');

$count = count(array_merge($a, $b, $c));

$results = array();
for ($i=1; $i<$count; $i++){

    if (isset($a[$i]) && !empty($a[$i])){ $results[] = $a[$i]; } 
    if (isset($b[$i]) && !empty($b[$i])){ $results[] = $b[$i]; } 
    if (isset($c[$i]) && !empty($c[$i])){ $results[] = $c[$i]; } 
}

print_r($results); // array(a, b, c, a, b, c ..)
?>

1 个答案:

答案 0 :(得分:1)

$a = array('a','a','a','a','a','a','a','a');
$b = array('b','b','b','b','b','b','b','b');
$c = array('c','c','c','c','c','c','c','c');


for ($i=0; $i < max(count($a), count($b), count($c)) ; $i++) {
    foreach (array('a', 'b', 'c') as $l) {
        if (!isset($$l[$i]) || empty($$l[$i])) {continue; };
        $results[] = $$l[$i];
    };
}; 


print_r($results);

请注意,在您的代码中,您以$ i = 1开头,而您可能想以$ i = 0开头(数组的第一个条目为0,而不是1)。

根据要求,可以进一步改进代码:如果您只有3个数组,并且不是很重要,那就应该这样做