如何在php中更改数组推送的结果[重复]

Posted

技术标签:

【中文标题】如何在php中更改数组推送的结果[重复]【英文标题】:How can I change the result of array push in php [duplicate] 【发布时间】:2020-04-20 18:17:03 【问题描述】:

如果条件为真,我有以下代码将数据推送到数组中,但结果不是我所希望的;

         <?php
$sql = "SELECT * FROM cart WHERE sess_id = '$sess_id'";
$result = mysqli_query($conn, $sql);   
$items= array();

if (mysqli_num_rows($result) > 0) 
    // output data of each row

   while($row = mysqli_fetch_assoc($result)) 

    $items[] = [
        'sku' => $row["prod_sku"], 
        'quantity' => (int)$row["prod_qty"]
    ];

if ($postage === 4.00)
    array_push($items, "sku_GSxe2lDNfK5b6E", 1);


        $conn->close();
             ?>

我希望第二条记录看起来与第一条相同,但不包括记录信息。有人可以告诉我该怎么做。我没有对数组做过很多事情,也无法在任何地方找到我需要的信息。提前致谢。

["sku":"sku_GGBzZqwz44UhRf","quantity":1,"sku_GSxe2lDNfK5b6E",1]

我希望它像这样输出

["sku":"sku_GGBzZqwz44UhRf","quantity":1, "sku":"sku_GSxe2lDNfK5b6E","quantity":1,]

【问题讨论】:

【参考方案1】:

您现有的代码将两个单独的值推送到数组中:

if ($postage === 4.00)
    array_push($items, "sku_GSxe2lDNfK5b6E", 1);

你想将另一个数组推入数组中:

if ($postage === 4.00)
    array_push($items, ["sku" => "sku_GSxe2lDNfK5b6E", "quantity" => 1]);

另外请注意,您的代码容易受到SQL injection 攻击。您应该通过mysqliPDO 使用带有绑定参数的预处理语句。 This post 有一些很好的例子。

【讨论】:

谢谢。那效果很好。我知道我必须修复 SQL 问题。当我将网站上传到实时环境时,我会这样做。 “当我将网站上传到实时环境时,我会这样做。”上传到实时环境之前执行。

以上是关于如何在php中更改数组推送的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript中推送不重复的数组并更改对象的属性值?

如何在Javascript数组中合并/推送重复值[关闭]

如何在Javascript数组中合并/推送重复值[关闭]

如何在数组的索引0处推送元素[重复]

如何在CloudFirestore中更改数组中的对象? [重复]

如何推送字符数组? [复制]