用 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 循环在这里可能更有意义,它将允许您使用循环计数器同时从两者访问相应的值。