【问题标题】:comma separated foreach逗号分隔的foreach
【发布时间】:2013-02-20 15:22:20
【问题描述】:

这个想法是获得一个逗号分隔的产品列表,但该列表必须包含“product_name (pipe) product_price*quantity” 例如,如果订单包含 2xABC(10.00 美元)和 3xDEF(20.00 美元),我的输出需要是“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 Warning: implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array in line XXX(指echo $listFinal;

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    你只是连接一个字符串,试试这个:

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

    【讨论】:

    • 当我尝试完全相同的代码(准确地说是$products)时,我收到一个致命错误“不能将 queryFactoryResult 类型的对象用作数组”,如果我改用 $list[],那么我获取PHP Warning: implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array
    • 您不能将$list 用作数组,b/c 您将其设置为字符串,因此implode 不起作用。您完全按照我在回答中的描述设置了foreach 循环? $products 只是一个由每次迭代的关联元素构造的字符串数组; products_name, final_price 等。你能发布var_dump($purchasedArray)吗?
    • 是的,我 c/p 你的代码。我相信 $products 不能使用,因为它已经在数据库查询中使用,而?不知道... :) 这是 var_dump:[链接]codepad.org/e2lzHTE2
    • 是的,你是对的,我没有看到 $products 已经分配,​​只需将 foreach 循环中的 $products 更改为其他内容,我更新了使用 @987654335 的答案@,但请随意使用任何你想要的东西。
    • WTF?!?!为什么这不适用于 $list[] ?我做了完全相同的事情,但是我使用了$list 而不是$formattedProducts,但它不起作用,现在它起作用了……我完全糊涂了。但是,没关系,非常感谢您的帮助!
    猜你喜欢
    • 2012-02-17
    • 2019-08-19
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多