2013-03-06 6 views
0

Идея состоит в том, чтобы получить список продуктов, разделенных запятыми, но этот список должен содержать «product_name (pipe) product_price * quantity» Например, если заказ содержит 2xABC (по цене 10,00 долларов США) и 3xDEF (по цене 20 долларов США)), мой выход должен был бы быть «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 ($purchasedArray as $purchased) { 
    $list .= $purchased['products_name'] . '|' . ($purchased['final_price']*$purchased['products_quantity']); 
} 

и хотите выводить результат:

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

Но, как обычно, я что-то пропускаю, и это не работает. :) Любая помощь приветствуется.

EDIT: Я получаю следующее сообщение об ошибке в моих журналах ошибок и ничего не повторяет: PHP Warning: implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array in line XXX (со ссылкой на echo $listFinal;)

+2

Что не работает. – robert

ответ

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

+0

Вы не можете использовать '$ list' в качестве массива, b/c, который у вас установлен как строка, поэтому почему' implode' не работает. Вы устанавливаете цикл foreach точно так, как я описал в своем ответе? '$ products' - это просто массив строк, построенных ассоциативными элементами каждой итерации; product_name, final_price и т. д. Можете ли вы опубликовать 'var_dump ($ приобретенный Array)'? –

+0

да, я c/p ваш код. Я считаю, что '$ products' нельзя использовать, потому что он уже используется в запросе БД и пока? dunno ... :) вот var_dump: [link] http://codepad.org/e2lzHTE2 – user1078494