2013-03-06 131 views
0

這個想法是得到一個以逗號分隔的產品列表,但該列表必須包含「product_name(pipe)product_price * quantity」 例如,如果訂單包含2xABC(在$ 10.00)和3xDEF(在$ 20.00 ),我的輸出需要是 「ABC|20.00,DEF|60.00」 我有以下代碼:逗號分隔的foreach

$products = $db->Execute($products_query); 
    while (!$products->EOF) { 
     $purchasedArray[] = array('products_name'=>$products->fields['products_name'], 
            'final_price'=>$products->fields['final_price'], 
            'products_quantity'=>$products->fields['products_quantity']); 
     $products->MoveNext(); 
     } 

然後,我運行這樣一個foreach:

foreach ($purchasedArray as $purchased) { 
    $list .= $purchased['products_name'] . '|' . ($purchased['final_price']*$purchased['products_quantity']); 
} 

,並希望輸出結果:

$listFinal = implode(','. $list); 
echo $listFinal; 

但是,像往常一樣,我失去了一些東西,這是行不通的。 :) 任何幫助將非常感激。

編輯:我碰到下面的錯誤在我的錯誤日誌,沒有什麼呼應:PHP Warning: implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array in line XXX(指echo $listFinal;

+2

什麼是不工作的。 – robert 2013-03-06 01:06:36

回答

2

你只是連接字符串,試試這個:

foreach ($purchasedArray as $purchased) { 
    $formattedProducts[] = $purchased['products_name'] . '|' . ($purchased['final_price']*$purchased['products_quantity']); 
} 

$listFinal = implode(',', $formattedProducts); 
echo $listFinal; 
+0

當我嘗試完全相同的代碼('$ products')時,我得到一個致命錯誤「不能使用queryFactoryResult類型的對象作爲數組」,如果我使用'$ list []'代替,那麼我會得到'PHP警告:implode()[function.implode]:參數必須是一個數組'''''''''' – user1078494 2013-03-06 01:17:08

+0

您不能使用'$ list'作爲數組,b/c將它設置爲一個字符串,因此'implode'不起作用。你完全按照我在答案中所描述的那樣設置'foreach'循環嗎? '$ products'只是由每個迭代的關聯元素構造的一串字符串; products_name,final_price等。你可以發佈'var_dump($ purchasedArray)'? – 2013-03-06 01:24:25

+0

是的,我c/p你的代碼。我相信'$ products'不能被使用,因爲它已經被用在數據庫查詢中,而? dunno ... :)這裏是var_dump:[link] http://codepad.org/e2lzHTE2 – user1078494 2013-03-06 01:33:57