通过二级键对包含单元素关联行的数组进行分组,以形成索引元素的关联数组

问题描述 投票:0回答:2

我有一个数组,其中包含数据如下:

[
    0 => ['www.google.com' => 'www.google.com/a'],
    1 => ['www.google.com' => 'www.google.com/a'],
    2 => ['www.test.com' => 'www.test.com'],
    5 => ['www.test.com' => 'www.test.com/c'],
]

我需要对特定网址的所有链接进行分组,如下所示:

Array (
 [www.google.com] => Array (
      [0] => www.google.com/a
      [1] => www.google.com/a
      )
 [www.test.com] => Array (
      [0] => www.test.com
      [1] => www.test.com/c
      )
  )
php arrays multidimensional-array grouping sub-array
2个回答
3
投票

如果我们调用第一个数组

$domains

$groups = array();

for ($i = 0; $i <= count($domains); $i++)
{
    foreach ($domains[$i] as $domain => $url)
    {
         $groups[$domain][] = $url;
    }
}

print_r($groups);

这可能有用...


0
投票

只需使用两个循环来访问嵌套的关联元素,并按二级键对数据进行分组,同时将值推入子数组中。 演示

$result = [];
foreach ($array as $row) {
    foreach ($row as $k => $v) {
        $result[$k][] = $v;
    }
}
var_export($result);

输出:

array (
  'www.google.com' => 
  array (
    0 => 'www.google.com/a',
    1 => 'www.google.com/a',
  ),
  'www.test.com' => 
  array (
    0 => 'www.test.com',
    1 => 'www.test.com/c',
  ),
)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.