php 从基于值的数组创建数组,并将匹配项作为数组包含在其中

k2arahey  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(102)

我希望按特定值(父名称)对数据进行分组,然后将共享同一父名称的所有项合并到"items"数组下
然而,它覆盖了items数组,而不是添加到它,因此,例如,输出中的"items"应该有多个项,而不是只有一个。
有什么想法吗?

$result = array();
foreach ($page->products_codes as $option) {
    $result[$option->parent->name]["title"] = $option->parent->title;
    $result[$option->parent->name]["items"] = $option->title;
}

输出为:

array (
  'fixture' => 
  array (
    'title' => 'Fixture',
    'items' => 'Pinhole90 Fixed with LED51',
  ),
  'finish' => 
  array (
    'title' => 'Finish',
    'items' => 'RAL',
  ),
  'ip-rating' => 
  array (
    'title' => 'IP Rating',
    'items' => 'IP54',
  ),
  'emergency' => 
  array (
    'title' => 'Emergency',
    'items' => 'Maintained 3hr Self Test',
  ),
  'installation' => 
  array (
    'title' => 'Installation',
    'items' => 'Plaster-kit for seamless flush appearance',
  ),
  'led' => 
  array (
    'title' => 'LED',
    'items' => 'LED50 ONE',
  ),
  'cct' => 
  array (
    'title' => 'CCT',
    'items' => '90 CRI 4000K',
  ),
  'beam-angle' => 
  array (
    'title' => 'Beam Angle',
    'items' => '38°',
  ),
  'protocol' => 
  array (
    'title' => 'Protocol',
    'items' => 'Bluetooth',
  ),
  'louvre-lens' => 
  array (
    'title' => 'Louvre/Lens',
    'items' => 'Heavy Spread Lens',
  ),
)

有什么想法吗?

l0oc07j2

l0oc07j21#

根据您指定的首选数据结构:

$result = array();
foreach ($page->products_codes as $option) {
    $result[$option->parent->name]["title"] = $option->parent->title;
    $result[$option->parent->name]["items"][] = $option;
}

$result = array_values($result);

下面是一个工作示例:https://3v4l.org/u9XBk

相关问题