0

誰かがこの問題に取り組む方法について助け/アドバイスを持っているなら、私はそれを本当に感謝します。私はすべての集中的な目的のためにうまくいくメタ検索エンジンを作成しました、しかし私のコードはかなり壊れやすいです!次のコードは、オブジェクトの配列のサンプルvar_dump(searchEngineArray)です。各検索エンジンの結果を配列に格納したいのですが、それは(A)のような一般的なループにある必要があります。1つの検索エンジンが結果を返さなくても壊れません(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]"; 
            } */
        }
4

1 に答える 1

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);
}
?>
于 2012-07-03T12:04:41.363 に答える