【问题标题】:Combine array of objects and once combined remove previous index?合并对象数组并合并后删除先前的索引?
【发布时间】:2017-10-03 07:52:38
【问题描述】:

我有一个对象数组,我需要组合具有相同键的子数组。这是我的原始数组。

0 => 
    object(Template)[59]
      protected 'values' => 
        array (size=3)
          'part' => string 'hinge'
          'part_status' => string 'warehouse'
          'part_type' => string 'consumable'
1 => 
array (size=1)
  '3741852' => 
    object(Template)[61]
      protected 'values' => 
        array (size=4)
          'partNum' => string '3741852'
          'part' => string 'bolt'
          'part_status' => string 'shipped'
          'part_type' => string 'consumable'
2 => 
array (size=1)
  '3741852' => 
    object(Template)[61]
      protected 'values' => 
        array (size=4)
          'partNum' => string '3741852'
          'part' => string 'bolt'
          'part_status' => string 'shipped'
          'part_type' => string 'consumable'

最终我需要做的是将两个数组与索引3741852 结合起来,并将它们放在同一个父索引下。

所以我设法做到了,就像这样。

foreach ($array as $key => $value) {
  foreach ($value as $data) {
    $partDetails[][$data['partNum']] = $details;
    if ($key === $data['partNum']) {
         $partDetails[$key] = $details;
    }
  }
}

但我不确定如何删除之前的索引 [2]?这是我目前拥有的。

0 => 
    object(Template)[59]
      protected 'values' => 
        array (size=3)
          'part' => string 'hinge'
          'part_status' => string 'warehouse'
          'customer_type' => string 'consumable'
1 => 
  array (size=1)
  '3741852' => 
    object(Template)[61]
      protected 'values' => 
        array (size=4)
          'partNum' => string '3741852'
          'part' => string 'bolt'
          'part_status' => string 'shipped'
          'part_type' => string 'consumable'
  '3741852' => 
    object(Template)[61]
      protected 'values' => 
        array (size=4)
          'partNum' => string '3741852'
          'part' => string 'bolt'
          'part_status' => string 'shipped'
          'part_type' => string 'consumable'
2 => 
array (size=1)
  '3741852' => 
    object(Template)[61]
      protected 'values' => 
        array (size=4)
          'partNum' => string '3741852'
          'part' => string 'bolt'
          'part_status' => string 'shipped'
          'part_type' => string 'consumable'

【问题讨论】:

  • 请允许我怀疑在您的索引 1 中,您有一个包含 2 个项目的数组,其键相同 3741852
  • 这正是var_dump 的显示方式。我觉得奇怪的是它没有像顶部那样显示为一个数组。我不熟悉对象,所以可能有问题。我也觉得奇怪的是他们似乎有相同的钥匙。
  • 注意数组 (size=1) 的含义?
  • 我最终只是根据需要构建了一个新数组,而不是尝试修改它。

标签: php arrays object multidimensional-array


【解决方案1】:

用途:

unset( $array[ $index ] ); // remove index from array
$array = array_values($array); // It will reindex array again

【讨论】:

  • 我会尽量尝试。
  • 再看这个答案,让我意识到这对我没有帮助。您正在使用变量作为索引,但我提出问题的部分原因是因为我目前无法知道索引。我想我需要类似于array_search 的东西,它将返回父键,但它必须搜索子键而不是值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2016-06-09
  • 2016-03-08
  • 1970-01-01
  • 2021-08-20
  • 2017-09-14
  • 1970-01-01
相关资源
最近更新 更多