首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将2个数组组合成第三个数组,该数组具有来自一个数组的非常数唯一键。

将2个数组组合成第三个数组,该数组具有来自一个数组的非常数唯一键。
EN

Stack Overflow用户
提问于 2017-09-12 06:25:57
回答 2查看 70关注 0票数 2

我有两个数组如下所示。

代码语言:javascript
运行
复制
$keys = [1,2,3,4-1,99,1,2,3,4-1,4-2,4-3,99,1,2,3,4-1,4-2,99]
$values = [a,b,c,d,x,a1,b1,c1,d1,e,g,x,a2,b2,c2,d2,e,x]

我想要组合成一个数组,如:

代码语言:javascript
运行
复制
$result = array(
  [0]=>array(1=>a,2=>b,3=>c,4-1=>d,99=>x),
  [1]=>array(1=>a1,2=>b1,3=>c1,4-1=>d1,4-2=>e,4-3=>g,99=>x),
  [2]=>array(1=>a2,2=>b2,3=>c2,4-1=>d2,4-2=>e,99=>x
);

规则是随时打破$key=99。目前,我尝试使用array_chunk,但语法只允许我按唯一键数对数组进行块块,在我的示例中这不是常量。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-12 06:33:45

您需要编写一个自定义脚本,它通过逻辑将这两个数组组合在一起。

您需要从$keys数组中获取每个键,并按位置从$values数组中将其与相同的元素组合。

示例:

代码语言:javascript
运行
复制
<?php
$keys = ['1', '2', '3', '4-1', '99', '1', '2', '3', '4-1', '4-2', '4-3', '99', '1', '2', '3', '4-1', '4-2', '99'];
$values = ['a', 'b', 'c', 'd', 'x', 'a1', 'b1', 'c1', 'd1', 'e', 'g', 'x', 'a2', 'b2', 'c2', 'd2', 'e', 'x'];

$i = 0;
$result = [];
foreach ($keys as $index => $key) {
    if (empty($result[$i]))
        $result[$i] = [$key => $values[$index]];
    else
        $result[$i][$key] = $values[$index];

    if ($key == 99)
        ++$i;
}

print_r($result);
票数 1
EN

Stack Overflow用户

发布于 2017-09-12 06:39:26

您可以使用foreach循环来实现这一点。

代码语言:javascript
运行
复制
$keys = ["1","2","3","4-1","99","1","2","3","4-1","4-2","4-3","99","1","2","3","4-1","4-2","99"];
$values = ["a","b","c","d","x","a1","b1","c1","d1","e","g","x","a2","b2","c2","d2","e","x"];
$new_array = array();
$split_at = "99";
$i = 0;
foreach ($keys as $key => $value) {
    $new_array[$i][$value] =$values[$key];

    if($split_at == $value){
     $i++;
    }
}

print_r($new_array);

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46169332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档