多级嵌套数组配对

时间:2019-09-24 13:06:14

标签: php arrays

多层嵌套数组配对 我有两个不同的数组。一种带主题,一种带笔记。这些注释应与主题匹配。这些阵列的“布局”将匹配在一起。例如:

$topics = [
    'Opening',
    'Aanwezigen',
    'Opmerkingen vorige notulen',
    'Ingezonden stukken' => [
        'Jaarverslag 2019',
        'Jaarcijfers 2019' => [
            'Jaarcijfers info',
        ],
     ],
    'Jaarrekening 2019' => [
        'Voorstel tot vaststelling van de jaarcijfers 2019 (stempunt)',
        'Vaststelling dividenduitkering (stempunt)',
        'Bespreking reserverings- en dividendbeleid',
    ],
    'Rondvraag',
    'Afsluiting',
];


$notes = [
    'Opening: notes',
    'Aanwezigen: notes',
    'Opmerkingen vorige notulen: notes',`
    'Ingezonden stukken: notes' => 
        'Jaarverslag 2019: notes',
        'Jaarcijfers 2019: notes' => [
            'Jaarcijfers info: notes',
    ],
    ],
    'Jaarrekening 2019: notes' => [
        'Voorstel tot vaststelling van de jaarcijfers 2019 (stempunt): notes',
    'Vaststelling didividenduitkering (stempunt): notes',
    'Bespreking reserverings- en didividendbeleid: notes',
    ],
    'Rondvraag: notes',
    'Afsluiting: notes'
];

首选输出如下:

Opening
Opening: notes

Aanwezigen
Aanwezigen: notes

Opmerkingen vorige notulen
Opmerkingen vorige notulen: notes

因此,两个数组的索引应相互配对。像是Opening的{​​{1}}和Opening: notes的{​​{1}}。

我已经尝试过了:

Aanwezigen

这适用于非嵌套数组,但不适用于我当前正在使用的数组。它给了我这个错误:

  

数组到字符串的转换。

关于如何最好地实现这一点的任何想法?因此,想法是我正在处理的文件接收两个数组,它们具有相同的“布局”,并将它们配对以在一个Aanwezigen: notes中循环通过。也许我应该使用$iterator = new MultipleIterator(); $iterator->attachIterator(new ArrayIterator($topics)); $iterator->attachIterator(new ArrayIterator($notes)); foreach($iterator as $topicMinute) { echo $topicMinute[0] . "<br/>" echo $topicMinute[1] . "<br /><br />"; } 以外的其他名称。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果要将数组组合在一起,可以将array-mapnull->函数一起使用,这将使您可以遍历该数组并为两个数组具有1个索引的值。

$arr = array_map(null, $topics, $notes);

实时示例:3v4l

现在,您可以遍历它并回显您所需要的内容:(注意,我使用 print_r() ,因为您的内部值可以是数组)

foreach($arr as $e) {
    echo print_r($e[0]) . "<br/>"; // 
    echo print_r($e[1]) . "<br/><br/>";
}