PHP如何将两个一维数组合并为指定键值对结构的多维数组
问题原因
你现有代码的问题是每次循环都会生成一个仅包含单个键值对的新数组,再追加到$data中,最终得到的结构会是[['label' => 1], ['data' => 2]],和预期的「两个键值对放在同一个子数组内」的要求不符。
解决方案
方法1:使用内置函数array_combine(最简洁)
PHP原生提供了array_combine()函数,直接接收键数组和值数组作为参数,就能拼接成关联数组,你只需要把生成的关联数组放到新的索引数组中即可:
// 你的两个原始数组 $cols = ['label', 'data']; $inputs = [1, 2]; // 合并为目标结构 $result = [ array_combine($cols, $inputs) ];
运行后$result就是你需要的[['label' => 1, 'data' => 2]]结构。
方法2:修改原有循环逻辑
如果需要用循环实现,调整逻辑为先初始化空的关联数组,循环给这个关联数组赋值,最后再把它追加到结果数组中即可:
$cols = ['label', 'data']; $inputs = [1, 2]; $data = []; $item = []; // 先初始化子数组 for ($i=0; $i < count($inputs); $i++) { $item[$cols[$i]] = $inputs[$i]; // 给同一个子数组添加键值对 } $data[] = $item; // 最后把组装好的子数组放到结果里
内容的提问来源于stack exchange,提问作者Felipe Saraiva
相关产品推荐
相关产品推荐

