2012-04-20 5 views
1

私はSolr検索エンジンを使用しています。それはそうのような私の検索結果を返します。この多次元配列をPHPで繰り返し処理するより良い方法はありますか?

array(2) { 
    ["responseHeader"]=> 
    array(3) { 
    ["status"]=> 
    int(0) 
    ["QTime"]=> 
    int(1) 
    ["params"]=> 
    array(5) { 
     ["wt"]=> 
     string(3) "php" 
     ["start"]=> 
     string(1) "0" 
     ["q"]=> 
     string(7) "monitor" 
     ["version"]=> 
     string(3) "2.2" 
     ["rows"]=> 
     string(2) "10" 
    } 
    } 
    ["response"]=> 
    array(3) { 
    ["numFound"]=> 
    int(2) 
    ["start"]=> 
    int(0) 
    ["docs"]=> 
    array(2) { 
     [0]=> 
     array(11) { 
     ["id"]=> 
     string(6) "VA902B" 
     ["name"]=> 
     string(49) "ViewSonic VA902B - flat panel display - TFT - 19"" 
     ["manu"]=> 
     string(15) "ViewSonic Corp." 
     ["weight"]=> 
     float(190.4) 
     ["price"]=> 
     float(279.95) 
     ["price_c"]=> 
     string(10) "279.95,USD" 
     ["popularity"]=> 
     int(6) 
     ["inStock"]=> 
     bool(true) 
     ["store"]=> 
     string(18) "45.17614,-93.87341" 
     ["cat"]=> 
     array(2) { 
      [0]=> 
      string(11) "electronics" 
      [1]=> 
      string(7) "monitor" 
     } 
     ["features"]=> 
     array(1) { 
      [0]=> 
      string(75) "19" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution" 
     } 
     } 
     [1]=> 
     array(12) { 
     ["id"]=> 
     string(7) "3007WFP" 
     ["name"]=> 
     string(34) "Dell Widescreen UltraSharp 3007WFP" 
     ["manu"]=> 
     string(10) "Dell, Inc." 
     ["includes"]=> 
     string(9) "USB cable" 
     ["weight"]=> 
     float(401.6) 
     ["price"]=> 
     float(2199) 
     ["price_c"]=> 
     string(8) "2199,USD" 
     ["popularity"]=> 
     int(6) 
     ["inStock"]=> 
     bool(true) 
     ["store"]=> 
     string(18) "43.17614,-90.57341" 
     ["cat"]=> 
     array(2) { 
      [0]=> 
      string(11) "electronics" 
      [1]=> 
      string(7) "monitor" 
     } 
     ["features"]=> 
     array(1) { 
      [0]=> 
      string(71) "30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast" 
     } 
     } 
    } 
    } 
} 

は私が$resultsという変数内でこの応答をキャプチャしています。私のページでは、私はそれぞれの結果がそうのような設定を取得するvardumpをやっている:これは私が必要とする正確に何である

array(11) { 
    ["id"]=> 
    string(6) "VA902B" 
    ["name"]=> 
    string(49) "ViewSonic VA902B - flat panel display - TFT - 19"" 
    ["manu"]=> 
    string(15) "ViewSonic Corp." 
    ["weight"]=> 
    float(190.4) 
    ["price"]=> 
    float(279.95) 
    ["price_c"]=> 
    string(10) "279.95,USD" 
    ["popularity"]=> 
    int(6) 
    ["inStock"]=> 
    bool(true) 
    ["store"]=> 
    string(18) "45.17614,-93.87341" 
    ["cat"]=> 
    array(2) { 
    [0]=> 
    string(11) "electronics" 
    [1]=> 
    string(7) "monitor" 
    } 
    ["features"]=> 
    array(1) { 
    [0]=> 
    string(75) "19" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution" 
    } 
} 

array(12) { 
    ["id"]=> 
    string(7) "3007WFP" 
    ["name"]=> 
    string(34) "Dell Widescreen UltraSharp 3007WFP" 
    ["manu"]=> 
    string(10) "Dell, Inc." 
    ["includes"]=> 
    string(9) "USB cable" 
    ["weight"]=> 
    float(401.6) 
    ["price"]=> 
    float(2199) 
    ["price_c"]=> 
    string(8) "2199,USD" 
    ["popularity"]=> 
    int(6) 
    ["inStock"]=> 
    bool(true) 
    ["store"]=> 
    string(18) "43.17614,-90.57341" 
    ["cat"]=> 
    array(2) { 
    [0]=> 
    string(11) "electronics" 
    [1]=> 
    string(7) "monitor" 
    } 
    ["features"]=> 
    array(1) { 
    [0]=> 
    string(71) "30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast" 
    } 
} 

が、存在する場合、私は思っていた:

foreach($results['response'] as $result) { 
    if(is_array($result)) { 
     foreach($result as $v) { 
      var_dump($v); 
     } 
    } 
} 

これは、その出力であります私の "ネストされたforeachループよりもそれを得るよりエレガントな方法と配列チェック"のアプローチです。

答えて

2
foreach ($results['response']['docs'] as $result) { 
    ... 
} 
+0

+1 http://ideone.com/HLnC9 – mellamokb

関連する問題