2015-04-05 76 views
1

我想解析一個SQL結果集,我遇到了多個問題。PHP解析sql結果集

 foreach ($rows as $key => $row) { 
      die(print(gettype($row))); // DIE 1 
      if (is_array($row)) { 
       foreach ((array)$row as $k => $r) { 
        die(print_r($r));  // DIE 2 
        if (!in_array($r['proposal'], $proposals)) { 
         array_push($proposals, $r['proposal']); 
        } 
        if (!in_array($r['question'], $scorequestions) && $r['type'] == 'score') { 
         array_push($scorequestions, $r['question']); 
        } 
        if (!in_array($r['question'], $recommendquestions) && $r['type'] == 'recommend') { 
         array_push($recommendquestions, $r['question']); 
        } 
       } 
      } 
     } 

我$行是:(http://i.imgur.com/YUpZvBx.png

+----------+--------+----------+-----------+----------+---------+-----------+-------------+------+ 
| question | title | campaign | type  | proposal | avg  | recommend | conditional | cnt | 
+----------+--------+----------+-----------+----------+---------+-----------+-------------+------+ 
|  101 | Title1 |  104 | score  |  38 | 6.6667 |   0 |   0 | 3 | 
|  101 | Title2 |  104 | score  |  39 | 9.6667 |   0 |   0 | 3 | 
|  101 | Title3 |  104 | score  |  40 | 8.0000 |   0 |   0 | 2 | 
|  101 | Title4 |  104 | score  |  41 | 3.0000 |   0 |   1 | 2 | 
|  101 | Title5 |  104 | score  |  42 | 9.0000 |   0 |   0 | 1 | 
|  101 | Title6 |  104 | score  |  43 | 9.0000 |   0 |   0 | 1 | 
|  101 | Title7 |  104 | score  |  44 | 7.6667 |   0 |   0 | 3 | 

$行是一個SQL結果集。 DIE 1 print告訴我$ row是一個數組,但是is_array()函數認爲它不是數組。

如果我跳過,如果循環(其註釋掉),並運行內部foreach循環,模具2給我:

Array ([question] => 105 [campaign] => 104 [type] => recommend [proposal] => 42 [avg] => -1.0000 [recommend] => 1 [conditional] => 1 [cnt] => 1 [title] => Title5 [amount] => 300 [theme] => offline) 1 

但後來我得到$ R [「建議」的非法串偏移誤差]。不知道我哪裏錯了。在發佈之前,我已閱讀了多個SO線程。

+0

嗨@u_mulder請多一點解釋?我該如何解決和在哪裏? – Chocolava 2015-04-05 19:08:02

+0

如果我這樣寫: foreach($ row = $ k => $ r) 然後我得到:爲foreach提供的無效參數() – Chocolava 2015-04-05 19:10:06

+0

如何獲取$ rows變量?你可以發佈一個樣本嗎? – Cristik 2015-04-05 19:10:27

回答

2

您直接在$ rows上迭代,而$ rows是具有包含實際數據的$ rows成員的對象。所以你應該迭代外循環中的$ rows->行。