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 ..)
?>
解决方案
$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 个数组,并且它不是超级重要,那么应该这样做
推荐阅读
- jpa - JPA like-query,考虑语言环境
- javascript - ReactJS 为什么我的 DOM / `display` 只渲染 'display: none'?
- eiffel - Eiffel:呼叫使用过时的功能。调用功能“to_string_8”:改用“name_32”
- angularjs - Angularjs - 动态地将服务传递给指令
- hibernate - Spring Boot 2.1 - 不能使用 hbm2ddl.auto 创建表
- reactjs - 在 componentWillMount 中链接 api - 异步等待或承诺
- oracle - 在插入匹配语句之前或之后删除值的触发器
- angularjs - AngularJS 迁移到使用导入/导出
- php - simplexml_load_file():无法启用加密
- javascript - 如何将我的项目的最新版本推送到 repo?