2014-11-23 60 views
1

有什么办法可以避免在不使用循环的情况下创建重复对象名称?避免在php中创建重复对象

$venue = array(); 

if(loop for checking duplicate OBJ){ 
     $temp = some_var which fetch from database; 

     //If it's not a duplicate object, creates new object 
     $venue["$temp"] = new Venue($temp); 
     $venue["$temp"]->do something; 
    } 
    else{ 
     //If it's a duplicate object, don't creates new object 
     $venue["$temp"]->do something; 
    } 

我试图用这样的循环来检查重复的对象名称(“名称”):

//检查名称是复制它在场地的阵列中的每个对象的?

for($itr = 0;$itr < $count($venue);$itr+=1){ 
     if($venue["$temp"]->name === $name){ 
      return true; //If it's a duplicate object name return true 
     } 
} 

问题是,当使用这个循环来检查我,它消耗了大量的时间来完成这项工作

回答

8

这样做的一个简单的方法是使用另一个阵列收集所有的名字作为数组键:

$allNames[$venue["$temp"]->name] = null; 

然后检查,如果它是一个重复的对象名称使用:

array_key_exists($allNames, $name); 
+0

谢谢你,比我好 – 2014-11-23 14:47:39