使用数组加载时,对象数组属性会添加索引

时间:2018-10-22 23:35:41

标签: php arrays object

对象对我来说有点新。

我有一个对象属性,它是一个数组... $obj->something[]。 我有一个多维关联数组... $schedule[$year][$month][$day][$event]

当我将数组加载到对象属性中时,对象会添加一个索引。

$obj->something[] = $schedule;

所以当我从对象中提取数据时,我得到了额外的索引...

[0][$year][$month][$day][$event]  

我尝试了array_replace,但似乎没有任何作用。如何避免获得额外的领先指数?

2 个答案:

答案 0 :(得分:0)

将数组直接分配给属性而不使用方括号。

$obj->something = $schedule;

在赋值语句左侧的末尾使用[],将分配的值附加到数组(如果尚不存在,则创建该数组)。

如果您已将something属性初始化为一个空数组,但是应该保留您的Schedule数组,则您希望$schedule替换该空数组,但是您将其放置{{ 1}}改为插入该数组。

答案 1 :(得分:0)

您可以尝试array_merge。 http://php.net/manual/en/function.array-merge.php

class Foo {
   private $something = [];

   function mergeEm(array $somethingElse) {
      $this->something = array_merge($this->something, $somethingElse); 
   }
}