用 array_push 构造多维数组
Construct multidimensional array with array_push
希望构造以下多维数组。
第一个level-1没问题,但是第二个设置成同样的level-1.
问题:
如何引导第二个 foreach 循环在 level-1 的正下方构建 level-2?
想要的结果:
Array
(
[id_no_1] => Array
(
[0] => title_1
)
[id_no_2] => Array
(
[0] => title_2
)
)
我的尝试:
<?php
// Position [Level-1]
$taxonomy_id = [
"id_no_1",
"id_no_2",
];
// Position [Level-2]
$titles = [
"title_1",
"title_2",
];
$array = [];
// Populate [level-1]
foreach ($taxonomy_id as $key => $value) {
array_push($array, $taxonomy_id["{$key}"]);
}
// Populate [level-2]
foreach ($titles as $key => $value) {
array_push($array, $titles["{$key}"]);
}
print_r($array);
结果
数组
(
[0] => id_no_1
[1] => id_no_2
[2] => title_1
[3] => title_2
)
使用一个 foreach 可以简单地解决您的问题:
foreach ($taxonomy_id as $key => $item) {
$array[$item][] = $titles[$key] ?? null;
}
您可以通过嵌套两个 foreach 来做到这一点:
$array = [];
foreach ($taxonomy_id as $key => $value) {
foreach ($titles as $key2 => $value2) {
if ($key == $key2) {
$array[$value][] = $value2;
}
}
}
你可以测试HERE
我会这样做:
$result = array_combine($taxonomy_id, array_chunk($titles, 1));
array_chunk($titles, 1)
将每个标题字符串放入一个数组中,然后您可以将其结果用作 array_combine()
.
的值
不过,我确实想知道原始的 $taxonomy_id
和 $titles
数组是从哪里来的。如果可能的话,我宁愿寻找一种在创建它们时将它们组合起来的方法,而不是像这样试图将它们粘在一起。
您想从一个输入数组中获取键,并从另一个输入数组中获取子数组的值 - 因此您需要以某种方式关联两者,而不是分别循环遍历它们。
A for
而不是 foreach
循环在这里可能更有意义,它将允许您使用循环计数器同时从两者访问相应的值。
希望构造以下多维数组。 第一个level-1没问题,但是第二个设置成同样的level-1.
问题:
如何引导第二个 foreach 循环在 level-1 的正下方构建 level-2?
想要的结果:
Array
(
[id_no_1] => Array
(
[0] => title_1
)
[id_no_2] => Array
(
[0] => title_2
)
)
我的尝试:
<?php
// Position [Level-1]
$taxonomy_id = [
"id_no_1",
"id_no_2",
];
// Position [Level-2]
$titles = [
"title_1",
"title_2",
];
$array = [];
// Populate [level-1]
foreach ($taxonomy_id as $key => $value) {
array_push($array, $taxonomy_id["{$key}"]);
}
// Populate [level-2]
foreach ($titles as $key => $value) {
array_push($array, $titles["{$key}"]);
}
print_r($array);
结果
数组
(
[0] => id_no_1
[1] => id_no_2
[2] => title_1
[3] => title_2
)
使用一个 foreach 可以简单地解决您的问题:
foreach ($taxonomy_id as $key => $item) {
$array[$item][] = $titles[$key] ?? null;
}
您可以通过嵌套两个 foreach 来做到这一点:
$array = [];
foreach ($taxonomy_id as $key => $value) {
foreach ($titles as $key2 => $value2) {
if ($key == $key2) {
$array[$value][] = $value2;
}
}
}
你可以测试HERE
我会这样做:
$result = array_combine($taxonomy_id, array_chunk($titles, 1));
array_chunk($titles, 1)
将每个标题字符串放入一个数组中,然后您可以将其结果用作 array_combine()
.
不过,我确实想知道原始的 $taxonomy_id
和 $titles
数组是从哪里来的。如果可能的话,我宁愿寻找一种在创建它们时将它们组合起来的方法,而不是像这样试图将它们粘在一起。
您想从一个输入数组中获取键,并从另一个输入数组中获取子数组的值 - 因此您需要以某种方式关联两者,而不是分别循环遍历它们。
A for
而不是 foreach
循环在这里可能更有意义,它将允许您使用循环计数器同时从两者访问相应的值。