【问题标题】:PHP wrong foreach codePHP错误的foreach代码
【发布时间】:2016-04-04 07:43:30
【问题描述】:

我做错了什么,foreach代码写在下面,但是好像不行:

$custom = "8-1,1-1,4-1,";

foreach ($custom as $each_item) {
    $id = $each_item['id'];
    $quantity = $each_item['quantity'];
    $sql3 = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1");
    while ($row = mysql_fetch_array($sql3)) {
        $product_name = $row["product_name"];
        $price = $row["price"];
    } }

我必须在这个 foreach 代码中进行哪些更改?谢谢

【问题讨论】:

  • 1) custom = '8-1,1-1,4-1'; 错误(缺少 $)。 2) 您正在使用 foreach 迭代字符串,并期望元素是关联数组 3) 您正在以不安全的方式使用 mysql_query并且不推荐使用该扩展名
  • 显示您的实际 $custom 变量。
  • BeeBee:感谢您想为此添加答案。但是,我们不会将问题编辑为答案 - 如果您想展示您是如何解决问题的,请在自我回答的帖子中添加。

标签: php arrays multidimensional-array foreach


【解决方案1】:

第一行,自定义不是变量(可能是复制粘贴错误)

$custom

然后你使用 can 数组操作符分割字符串,你需要先使用分割字符串:

$custompieces = explode(",", $custom);

然后,您已将 $custom 声明为 $each_item,但您似乎正在尝试访问一个不存在的子数组。 $each_item[id] 和 $each_item[quantity] 没有在任何地方定义。我猜您正在尝试将 8-1 拆分为 id-quantity,在这种情况下,您需要实际定义它们才能使用它们。

$pieces = explode("-", $each_item);
$id = $pieces[0];
$quantity = $pieces[1];

所以你的最终代码需要是:

$custom = "8-1,1-1,4-1,";
$custompieces = explode(",", $custom);
foreach ($custompieces as $each_item) {
$pieces = explode("-", $each_item);
$id = $pieces[0];
$quantity = $pieces[1];
$sql3 = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1");
while ($row = mysql_fetch_array($sql3)) {
    $product_name = $row["product_name"];
    $price = $row["price"];
} }

【讨论】:

  • 很好的答案,但它只打印出字符串中的最后一条记录。
  • 它会这样做,因为您正在覆盖每一行的输出。将您的操作放入函数中
  • 我,见。我已经在函数中添加了操作,它现在将最后一条记录的名称和价格加倍,但数量为空。我该如何解决这个问题?
  • $custom = "8-1,1-1,4-1,"; $custompieces = explode(",", $custom); foreach ($custompieces as $each_item) { $pieces = explode("-", $each_item); $id = $pieces[0]; $数量 = $件[1]; $sql3 = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1"); while ($row = mysql_fetch_array($sql3)) { $product_name = $row["product_name"]; $price = $row["price"]; } /* 使用 $quantity、$product_name 和 $price 将您的操作/回显放在此处并取消注释 */ }
  • 一切都会好起来的,但是会发生这种情况:imgur.com/xnX5h6q 代码:imgur.com/t9765NJ
【解决方案2】:

foreach 旨在用于迭代 array,但您将它与 string 一起使用。

所以它不适合你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多