PHP:如何在已经存在数组值的数组中追加数组
我有以下代码:PHP:如何在已经存在数组值的数组中追加数组,php,arrays,Php,Arrays,我有以下代码: $counter = $total_amt = 0; $data = ""; $address = array( 'name' => filter_var($_POST["cust_name"], FILTER_SANITIZE_STRING), 'contact' => filter_var($_POST["cust_contact"], FILTER_SANITIZ
$counter = $total_amt = 0;
$data = "";
$address = array(
'name' => filter_var($_POST["cust_name"], FILTER_SANITIZE_STRING),
'contact' => filter_var($_POST["cust_contact"], FILTER_SANITIZE_NUMBER_INT),
'pincode_id' => filter_var($_POST["cust_pincode"], FILTER_SANITIZE_NUMBER_INT),
'address' => filter_var($_POST["cust_address"], FILTER_SANITIZE_STRING),
'landmark' => filter_var($_POST["cust_landmark"], FILTER_SANITIZE_STRING),
'state_id' => filter_var($_POST["cust_state"], FILTER_SANITIZE_STRING),
'city_id' => filter_var($_POST["cust_city"], FILTER_SANITIZE_STRING)
);
foreach ($_SESSION["cart_item"] as $item)
{
if($counter < 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
elseif($counter >= 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
$data[] = $data;
}
$total_amt = $total_amt + $item["final_price"];
$counter ++;
}
我期待这种订单
Array
(
[0] => Array
(
[item] => 2
[quantity] => 2
[price] => 670
)
[1] => Array
(
[item] => 3
[quantity] => 1
[price] => 810
)
)
现在的情况是,我使用php会话在购物车中添加了两个产品。我想将该会话变量添加到和数组中,然后使用serialize函数将其存储在数据库中。但是,我无法以如上所示的数组格式存储变量
我甚至尝试过array_merge()函数和其他逻辑,但没有一个给出这种输出。有人能帮我解释一下这个逻辑吗。提前感谢将此更改为:
if($counter < 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
elseif($counter >= 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
$data[] = $data;
}
if ($counter < 1)
{
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
elseif ($counter >= 1)
{
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
if($counter<1)
{
$data=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}
elseif($counter>=1)
{
$data=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
$data[]=$data;
}
这个:
if($counter < 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
elseif($counter >= 1)
{
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
$data[] = $data;
}
if ($counter < 1)
{
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
elseif ($counter >= 1)
{
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
}
if($counter<1)
{
$data[]=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}
elseif($counter>=1)
{
$data[]=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}
像这样修改脚本。您还可以删除无用的代码
$data = array();
...
foreach ($_SESSION["cart_item"] as $item)
{
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
$total_amt = $total_amt + $item["final_price"];
}
问题是您正在重用变量
$data
当你这样做的时候
$data = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
它抛出旧的$data
数组,并用该数组替换它
然后你会:
$data[] = $data;
并将此数组的副本添加到自身
你可以简单地写:
$data[] = array(
'item' => $item['id'],
'quantity' => $item["quantity"],
'price' => $item["price"]
);
将新元素添加到包含此数组的$data
如果($counter==1),测试也不需要对第一个条目执行不同的操作。您应该在循环之前将$data
初始化为空数组
$data = array();
不要对两个数组使用相同的变量名$data
。那么我应该如何附加它呢?我的意思是说我的逻辑哪里出了问题,我应该在什么时候实现新变量,这样即使有两个以上的数组,也可以轻松添加它们。我的答案中已经解释过了。new Array()
在PHP中?还有一个问题@Dez我想问的是,我已经创建了这样的数组$data[$item['id']=Array()
这意味着它将创建一个名为的数组值,$item['id']
中的值是什么,我要做的是创建一个名为total的最后一个数组来存储其中的总金额。如何做到这一点?能否请您详细说明?无论如何,你应该用你新发现的疑问独立地提出一个新问题。哦,我想我明白你的意思了。循环完成后,可以向数组中添加新元素。例如,在您的案例中:$data['total']=array('price'=>$total\u amt)代码>