如何在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 攻击。您应该通过mysqli 或PDO 使用带有绑定参数的预处理语句。 This post 有一些很好的例子。
【讨论】:
谢谢。那效果很好。我知道我必须修复 SQL 问题。当我将网站上传到实时环境时,我会这样做。 “当我将网站上传到实时环境时,我会这样做。”在上传到实时环境之前执行。以上是关于如何在php中更改数组推送的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Javascript中推送不重复的数组并更改对象的属性值?