Php 逗号分隔的foreach
其想法是获得一个以逗号分隔的产品列表,但该列表必须包含“产品名称(管道)产品价格*数量” 例如,如果订单包含2xABC(10.00美元)和3xDEF(20.00美元),我的输出将需要是“Php 逗号分隔的foreach,php,foreach,Php,Foreach,其想法是获得一个以逗号分隔的产品列表,但该列表必须包含“产品名称(管道)产品价格*数量” 例如,如果订单包含2xABC(10.00美元)和3xDEF(20.00美元),我的输出将需要是“ABC | 20.00,DEF | 60.00” 我有以下代码: $products = $db->Execute($products_query); while (!$products->EOF) { $purchasedArray[] = array('produc
ABC | 20.00,DEF | 60.00
”
我有以下代码:
$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警告:内爆()[]:参数必须是第XXX行中的数组(参考echo$listfail;
)您只是在连接字符串,请尝试以下操作:
foreach ($purchasedArray as $purchased) {
$formattedProducts[] = $purchased['products_name'] . '|' . ($purchased['final_price']*$purchased['products_quantity']);
}
$listFinal = implode(',', $formattedProducts);
echo $listFinal;
当我尝试完全相同的代码时($products
),我得到一个致命错误“不能将queryFactoryResult类型的对象用作数组”,如果我使用$list[]
,那么我会得到PHP警告:内爆()[]:参数必须是数组
您不能将$list
用作数组,b/c您将其设置为字符串,因此,为什么内爆
不起作用。您是否完全按照我在回答中所述设置了foreach
循环$products
只是由每个迭代的关联元素构造的字符串数组;产品名称、最终价格等。您能否发布var\u dump($purchasedArray)
?是的,我将c/p您的代码。我认为,$products
无法使用,因为它已经在数据库查询中使用,而while?不知道……:)这里是var_dump:[link]Ya,你是对的,我没有看到已经分配了$products
,只需将$products
foreach
循环中的$products
更改为其他内容,我更新了答案以使用$formattedProducts
,但可以随意使用任何你想要的东西。WTF?!?!为什么这不适用于$list[]
?我做了完全相同的事情,但我使用了$list
而不是$formattedProducts
,但它不起作用,现在它起作用了。。。我完全糊涂了。不过,别客气,非常感谢你的帮助!