合并来自两个数组的列值以形成关联数组的索引数组
Merge column values from two arrays to form an indexed array of associative arrays
我有两个数组:
$a = ['0' => 1, '1' => 2, '2' => 3]
$b = ['0' => 4, '1' => 5, '2' => 6]
我想像这样创建一个新数组:
[
['a' => 1, 'b' => '4'],
['a' => '2', 'b' => '5']
]
我尝试过使用 array_merge
和 array_merge_recursive
,但我无法获得正确的结果。
$data = array_merge_recursive(array_values($urls), array_values($id));
您必须使用自定义函数应用 array_map():
$newArray = array_map('combine',array_map(null, $a, $b));
function combine($n){
return array_combine(array('a','b'),$n);
}
print_r($newArray);
试试这个
$c = array_merge($a,$b)
$d[] = array_reduce($d, 'array_merge', []);
它将合并两个数组并减少并重新合并它。
您可以使用 foreach
来解决这个问题
$a = ['0' => 1, '1' => 2, '2' => 3];
$b = ['0' => 4, '1' => 5, '2' => 6];
$res = [];
$i = 0;
$total = 2;
foreach($a as $k => $v){
$res[$i]['a'] = $v;
$res[$i]['b'] = $b[$k];
$i++;
if($i == $total) break;
}
我们的想法是拥有一个数组 $ab = ['a','b']
和来自这两个数组的数组,例如 $merged_array = [[1,4],[2,5],[3,6]]
。
现在我们可以将数组 $ab
与 $merged_array
的每个元素组合起来,这将是我们需要的结果。
$first = ['0' => 1, '1' => 2, '2' => 3];
$second = ['0' => 4, '1' => 5, '2' => 6];
$merged_array = [];
for($i=0;$i<count($first);$i++)
{
array_push($merged_array,[$first[$i],$second[$i]]);
}
$final = [];
$ab = ['a','b'];
foreach($merged_array as $arr)
{
array_push($final,array_combine($ab, $arr));
}
print_r($final);
所有早期的答案都太努力了。我看到过多的迭代、迭代的函数调用和计数器变量。
因为只有两个数组,而且两个数组之间的键完全相同,所以一个简单的foreach循环就可以了。只需将关联数组推入结果数组即可。
代码:(Demo)
$a = ['0' => 1, '1' => 2, '2' => 3];
$b = ['0' => 4, '1' => 5, '2' => 6];
$result = [];
foreach ($a as $k => $v) {
$result[] = ['a' => $v, 'b' => $b[$k]];
}
var_export($result);
输出:
array (
0 =>
array (
'a' => 1,
'b' => 4,
),
1 =>
array (
'a' => 2,
'b' => 5,
),
2 =>
array (
'a' => 3,
'b' => 6,
),
)
我有两个数组:
$a = ['0' => 1, '1' => 2, '2' => 3]
$b = ['0' => 4, '1' => 5, '2' => 6]
我想像这样创建一个新数组:
[
['a' => 1, 'b' => '4'],
['a' => '2', 'b' => '5']
]
我尝试过使用 array_merge
和 array_merge_recursive
,但我无法获得正确的结果。
$data = array_merge_recursive(array_values($urls), array_values($id));
您必须使用自定义函数应用 array_map():
$newArray = array_map('combine',array_map(null, $a, $b));
function combine($n){
return array_combine(array('a','b'),$n);
}
print_r($newArray);
试试这个
$c = array_merge($a,$b)
$d[] = array_reduce($d, 'array_merge', []);
它将合并两个数组并减少并重新合并它。
您可以使用 foreach
来解决这个问题
$a = ['0' => 1, '1' => 2, '2' => 3];
$b = ['0' => 4, '1' => 5, '2' => 6];
$res = [];
$i = 0;
$total = 2;
foreach($a as $k => $v){
$res[$i]['a'] = $v;
$res[$i]['b'] = $b[$k];
$i++;
if($i == $total) break;
}
我们的想法是拥有一个数组 $ab = ['a','b']
和来自这两个数组的数组,例如 $merged_array = [[1,4],[2,5],[3,6]]
。
现在我们可以将数组 $ab
与 $merged_array
的每个元素组合起来,这将是我们需要的结果。
$first = ['0' => 1, '1' => 2, '2' => 3];
$second = ['0' => 4, '1' => 5, '2' => 6];
$merged_array = [];
for($i=0;$i<count($first);$i++)
{
array_push($merged_array,[$first[$i],$second[$i]]);
}
$final = [];
$ab = ['a','b'];
foreach($merged_array as $arr)
{
array_push($final,array_combine($ab, $arr));
}
print_r($final);
所有早期的答案都太努力了。我看到过多的迭代、迭代的函数调用和计数器变量。
因为只有两个数组,而且两个数组之间的键完全相同,所以一个简单的foreach循环就可以了。只需将关联数组推入结果数组即可。
代码:(Demo)
$a = ['0' => 1, '1' => 2, '2' => 3];
$b = ['0' => 4, '1' => 5, '2' => 6];
$result = [];
foreach ($a as $k => $v) {
$result[] = ['a' => $v, 'b' => $b[$k]];
}
var_export($result);
输出:
array (
0 =>
array (
'a' => 1,
'b' => 4,
),
1 =>
array (
'a' => 2,
'b' => 5,
),
2 =>
array (
'a' => 3,
'b' => 6,
),
)