首页 > 解决方案 > 将多个数组中的数据合并到一个数组中

问题描述

我编写了一个脚本,将多个数组的结果相等地组合在一起。该脚本运行良好,但我想更轻松地完成它。我的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 ..)
?>

标签: 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');


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 个数组,并且它不是超级重要,那么应该这样做


推荐阅读