2012-07-05 126 views
2

我在玩zencart,試圖讓它做我想做的事情,但我已經用盡了Google的想法。循環遍歷一個對象 - php

當我使用ZENCART功能的軟件返回一個對象,看起來查詢數據庫,如:

queryFactoryResult Object 
(
[is_cached] => 
[resource] => Resource id #117 
[cursor] => 11 
[EOF] => 
[fields] => Array 
    (
     [products_id] => 5582 
     [products_description] => description here 
     [products_name] => Lucky magnet – Each petal... 
     [products_type] => 1 
     [products_quantity] => 0 
     [products_image] => EachPetalMag.jpg 
     [products_price] => 3.4000 
     [products_status] => 1 
     [products_ordered] => 14 
     [master_categories_id] => 21 
     [supplier_id] => 7 
    ) 
) 

我不得不遍歷一次算多少master_categories在那裏之前,我可以做任何事情:

while (!$products->EOF) { 
    $products_count++; 
    $supcats[$products->fields['master_categories_id']] = $products->fields['master_categories_id']; 
    $products->MoveNext(); 
} 

我再通過對象需要循環再次使用類似上面的while循環,我已經試過:

reset($products); 

$products->EOF = FALSE; 

,但他們沒有工作。有沒有辦法做到這一點,無需再次發送查詢?禪車queryFactoryResult

+0

您是否嘗試將數據存儲在數組中並第二次循環該數組?例如,PDO無法倒帶結果集光標。 – rodneyrehm 2012-07-05 19:22:51

+0

您可以逐步瀏覽數據 - 按照@rodneyrehm的建議,統計master_categories的數量並將數據複製到數組中。 – andrewsi 2012-07-05 19:23:58

+0

ZenCart沒有將指針設置回開始而不重新查詢或將信息存儲在數組中的功能。必須有更好的編寫邏輯的方法,而不需要多次遍歷結果集。 – Quantastical 2012-07-05 19:26:36

回答

0

規則陣列狀的操作將無法正常工作,因爲它不是一個數組,所以這是行不通的:

reset($products); 

要遍歷變量再次使用queryFactoryResult->移動(ROW_NUMBER )方法:

$products->Move(0);