PHP数组\合并\递归foreach循环
如何将数组循环合并到单个数组(可能是对象)中,并将每个值添加到其关联的公共键中PHP数组\合并\递归foreach循环,php,arrays,foreach,Php,Arrays,Foreach,如何将数组循环合并到单个数组(可能是对象)中,并将每个值添加到其关联的公共键中 Categories: Array ( [category] => introduction [timeZone] => Europe/Stockholm [language] => Danish ) Array ( [category] => introduction [timeZone] => Europe/Stockholm [language] => Danish )
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 )
进入
迄今为止:
foreach ($categories as $category){
$collection = array_merge_recursive($category);
}
如果在PHP中指定$array1、$array2,那么array\u merge\u recursive似乎可以实现我的结果。但我需要从foreach循环开始
谢谢 我认为这个棘手的解决方案:
$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之后就可以工作了,因为在这个版本中,我们有
数组_列
给定名为$categories
的初始数组,请考虑:
$collection = array_merge_recursive(...$categories);
foreach($collection as &$item) $item = array_unique($item);
输出:
[
'category' => ['intro','learning'],
'timezone' => ['Europe'],
'language' => ['Danish','German'],
]
谢谢!这正是我想要的。但问题是,为什么“foreach($collection as&$item)$item=array_unique($item);”因为这也适用于“数组_unique($collection)”。只需支付利息,因为两者的回报相同result@Elliott我对
$collection
的每个成员调用array\u unique()。否则,如果合并的数组在其类别
子数组中都有一个intro
值,则可能最终得到'category'=>['intro','intro']
。
[
'category' => ['intro','learning'],
'timezone' => ['Europe'],
'language' => ['Danish','German'],
]