1

在一个循环中,我正在处理与产品一些单位相关的变量,我试图将这两个添加到一个数组中:

$pedido = array();

所以,

    foreach($_POST as $post_key => $post_value){

        if ($post_value=="on") {
            $nombreProducto = mysql_fetch_assoc($mySQL->query("SELECT nombre from productos WHERE id_producto='$post_key'"));
            $cantidad = $_POST[$post_key."Number"];

            echo "<h1>".$nombreProducto['nombre']."</h1>"." Cantidad: ".$cantidad." <br><br>";
            $pedido["$nombreProducto"] = $cantidad;
        }
    }

就在:

$pedido["$nombreProducto"] = $cantidad;

我尝试执行添加的地方,但是输出var_dump如下:

数组(1){[“数组”]=>字符串(1)“3”}

不完全是我想要的格式。

4

4 回答 4

1

删除引号和

$pedido[$nombreProducto['nombre']] = $cantidad;

已编辑

它似乎$nombreProducto是一个数组,所以你需要指出关键字段,所以我改为使用字段“nombre”

如果您看到var_dump它是一个带有键的数组,"Array"这就是您尝试将数组转换为字符串并返回单词的原因"Array"

于 2013-10-25T10:56:34.803 回答
1

您不应该将变量本身放在引号中。删除引号。

此外,由于您只是$nombreProducto['nombre']在前一行访问,因此很明显该变量是一个数组。您不能使用数组作为键,只允许使用整数和字符串。所以使用一些可以识别它的东西,比如它的 ID 号。

于 2013-10-25T10:57:16.393 回答
1

使用$pedido[$nombreProducto['nombre']] = $cantidad;代替$pedido["$nombreProducto"] = $cantidad;

于 2013-10-25T10:58:42.447 回答
0

以下是没有意义的:

$pedido["$nombreProducto"] = $cantidad;

你想在这里做什么?我想你想要做的是:

$pedido[$nombreProducto['nombre']] = $cantidad;

此外,您可能想尝试像这样输出数组:

print_r($pedido);

我建议你重新编写 mysql 查询,这样你就不需要循环它了。这是出于安全和效率的原因。我还建议您使用 mysqli 而不是 mysql,因为 mysql 已被弃用且使用不安全。您不检查是否设置了 $_POST[$post_key."Number"] ,至少在此代码中没有。我希望您在将 $_POST 输入用于数据库之前对其进行清理/验证?

于 2013-10-25T11:09:14.337 回答