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