2012-07-03 3 views
0

누군가이 문제를 해결하는 방법에 대한 도움/조언을 제공한다면 정말 감사하겠습니다. 모든 집중적 인 목적을 위해 작동하는 메타베이스 엔진을 만들었지 만 코드가 꽤 파괴적입니다! 다음 코드는 searchEngineArray 객체 배열의 샘플 var_dump입니다. 각 검색 엔진의 결과를 배열에 저장하려고하지만 (A) 일종의 일반 루프에 있어야합니다. 한 검색 엔진이 결과를 반환하지 않으면 중단되지 않으며 (B). 추가 검색 엔진을 쉽게 수용 할 수 있습니다.배열의 개체 데이터에 액세스

object(BingSearch)[1] 
    private 'formatted_query' => string 'england' (length=7) 
    public 'search_results' => 
    array 
     0 => 
     array 
      'title' => string 'England - Wikipedia, the free encyclopedia' (length=42) 
      'url' => string 'http://en.wikipedia.org/wiki/England' (length=36) 
      'score' => int 30 
     1 => 
     array 
      'title' => string 'BBC News - England' (length=18) 
      'url' => string 'http://www.bbc.co.uk/news/england/' (length=34) 
      'score' => int 28 
     2 => 
     array 
      'title' => string 'The FA - The website for the English football association, The FA ...' (length=69) 
      'url' => string 'http://www.thefa.com/' (length=21) 
      'score' => int 26 

object(BlekkoSearch)[2] 
    private 'formatted_query' => string 'england' (length=7) 
    public 'search_results' => 
    array 
     0 => 
     array 
      'title' => string '<strong>England</strong> - Wikipedia' (length=36) 
      'url' => string 'http://en.wikipedia.org/wiki/England' (length=36) 
      'score' => int 25 
     1 => 
     array 
      'title' => string 'The official site of Visit <strong>England</strong> - The <strong>England</strong> Tourist Board' (length=96) 
      'url' => string 'http://www.enjoyengland.com/' (length=28) 
      'score' => int 23 
     2 => 
     array 
      'title' => string 'Arts Council <strong>England</strong> - Arts Council' (length=52) 
      'url' => string 'http://www.artscouncil.org.uk/' (length=30) 
      'score' => int 21 


object(EntirewebSearch)[3] 
    private 'formatted_query' => string 'england' (length=7) 
    public 'search_results' => 
    array 
     0 => 
     array 
      'title' => string 'Arts Council England | Arts Council' (length=35) 
      'url' => string 'http://www.artscouncil.org.uk/' (length=30) 
      'score' => int 20 
     1 => 
     array 
      'title' => string 'Sport England ' (length=14) 
      'url' => string 'http://www.sportengland.org/' (length=28) 
      'score' => int 18 
     2 => 
     array 
      'title' => string 'Bank of England ' (length=16) 
      'url' => string 'http://www.bankofengland.co.uk/' (length=31) 
      'score' => int 16 

나는 어느 정도까지는 작동하지만, 실제로는 좋은 코드가 아닙니다. 현재 어떻게 작동하는지, 정보를 저장하는 좀 더 일반적인 방법을 만드는 방법에 대한 아이디어가 있습니까? 당신의 도움에 대한

public function storeResults($searchEnginesArray) 
    { 
     //The following is very bad 
     //$blekko_Array = ""; 
     //$bing_Array = ""; 
     //$entireweb_Array = ""; 

     for($x=0; $x<sizeof($searchEnginesArray); $x++) 
     { 
      var_dump($searchEnginesArray[$x]); 
      /*switch ($searchEnginesArray[$x]->getEngineName()) { 
      case "Bing": 
       $bing_Array = $searchEnginesArray[$x]->getResults(); 
       break; 
      case "Blekko": 
       $blekko_Array = $searchEnginesArray[$x]->getResults(); 
       break; 
      case "Entireweb": 
       $entireweb_Array = $searchEnginesArray[$x]->getResults(); 
       break; 
      default: 
       echo "Error: Unexpected Search Engine : ".$searchEnginesArray[$x]->getEngineName(). " Expects [Bing/Blekko/Entireweb]"; 
      } */ 
     } 

답변

1
<? 
public function storeResults($searchEnginesArray) { 
    for($i=0;$i<count($searchEnginesArray);$i++) { 
     $result = $searchEnginesArray[$i]->getResults(); 
     // Ignore engines with empty results 
     if(!empty($result)) { 
      $results[ $searchEnginesArray[$i]->getEngineName() ] = $result; 
     } 
    } 
    // create an array for every engine, are you sure it's needed? 
    extract($results, EXTR_SKIP); 
} 
?> 
+0

덕분에, 이것은 매우 쉽게 나중에 결과를 정렬 할 것입니다. – shanahobo86