繁体   English   中英

PHP array_merge_recursive与foreach循环

[英]PHP array_merge_recursive with foreach loop

如何将数组循环合并到单个数组(可能是对象)中,将每个值添加到与其关联的公共键中?

Categories: 

Array ( [category] => introduction [timeZone] => Europe/Stockholm [language] => Danish )

Array ( [category] => introduction [timeZone] => Europe/Stockholm [language] => Danish )

Array ( [category] => e-learning [timeZone] => Europe/Stockholm [language] => German )

Collection

Array ( 
        [category] => Array (e-learning,introduction) 
        [timeZone] => Europe/Stockholm 
        [language] => Array (Danish,German)
)

到目前为止的Mycode:

foreach ($categories as $category){
   $collection = array_merge_recursive($category);
}

如果在PHP中将$ array1,$ array2分隔开,array_merge_recursive似乎可以达到我的结果。 但是我需要从一个foreach循环开始。

谢谢。

给定名为$categories的初始数组,请考虑:

$collection = array_merge_recursive(...$categories);
foreach($collection as &$item) $item = array_unique($item);

输出:

[
  'category' => ['intro','learning'],
  'timezone' => ['Europe'],
  'language' => ['Danish','German'],
]

现场演示

我想这个棘手的解决方案:

$collection = [];
// get keys of a first element of categories
$keys = array_keys($categories[0]);
// iterate over these keys
foreach ($keys as $key) {
    // use `array_unique` to eliminate duplicates
    $collection[] = array_unique(
        // `array_column` will give you all values under `$key`
        array_column($categories, $key)
    );
}

当然,此功能自php5.5起生效,因为在此版本中,我们具有array_column

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM