在PHP数组中添加键值?

时间:2013-10-25 10:54:19

标签: php arrays

在我正在处理与产品数量的单位相关的变量的循环中,我正在尝试将这两个添加到数组中:< / p>

$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的输出如下:

  

array(1){[“Array”] =&gt; string(1)“3”}

不完全是我想要的格式。

4 个答案:

答案 0 :(得分:1)

删除引号和

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

EDITED

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

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

的原因

答案 1 :(得分:1)

你不应该在引号中单独放置一个变量。删除引号。

此外,由于您刚刚访问前一行的$nombreProducto['nombre'],因此很明显该变量是一个数组。您不能将数组用作键,只允许使用整数和字符串。因此,请使用标识它的内容,例如ID号。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

以下做法没有意义:

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

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

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

另外,您可能想尝试输出这样的数组:

print_r($pedido);

我建议你重新编写mysql查询,这样你就不需要循环了。这是出于安全和效率的原因。我还建议您使用mysqli而不是mysql,因为不推荐使用mysql并且使用不安全。您不检查是否设置了$ _POST [$ post_key。“Number”],至少不在此代码中。我希望你在对数据库使用之前清理/验证来自$ _POST的输入吗?