数组中对象属性的不同值?

时间:2018-02-07 12:13:13

标签: php arrays object

我正在创建一个包含其中对象的数组,我需要检查何时循环并添加对象属性名称是否已具有重复值,然后仅向数组添加不同的结果。

$lifestyle = array();    
foreach ($this->images as $image) {
    if(!in_array($image->getName(), $lifestyle['name'])){
       $lifestyle[] = $image;
    }
}

但是第3行的$lifestyle['name']显然不是针对对象,但我不确定如何做到这一点!我只是遇到了一个或另一个错误。

当我不尝试过滤掉重复项时所做的数组/对象如下所示:

array (size=3)
0 => 
object(Pingu\ProductBundle\Entity\Image)[746]
  private 'id' => int 1175
  private 'name' => string 'cl0021_02' (length=9)
  private 'main' => boolean false
  private 'active' => boolean true
  private 'type' => string 'lifestyle' (length=9)
1 => 
object(Pingu\ProductBundle\Entity\Image)[747]
  private 'id' => int 1176
  private 'name' => string 'cl0021_02' (length=9)
  private 'main' => boolean false
  private 'active' => boolean true
  private 'type' => string 'lifestyle' (length=9)
2 => 
object(Pingu\ProductBundle\Entity\Image)[748]
  private 'id' => int 1177
  private 'name' => string 'cl0021_02' (length=9)
  private 'main' => boolean false
  private 'active' => boolean true
  private 'type' => string 'lifestyle' (length=9)

1 个答案:

答案 0 :(得分:1)

正如您所指出的,$lifestyle['name']部分的代码实际上是错误的。

in_array函数需要一个数组作为第二个参数,但是你尝试用$lifestyle['name']设置它,这是不正确的(并且不存在)。

您的$lifestyle var是一个索引数组,您可以在其中添加图像(第4行)。

如果要检查图像对象数组中是否存在给定的属性值,则不能使用in_array执行此操作(in_array与这样的语句一起使用:{{1} }。

你必须循环遍历整个in_array(10, [1,2,3]); // evaluates to FALSE数组并检查每个项目的名称属性:

$lifestyle