我有以下代码:
$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
(
[item] => 3
[quantity] => 1
[price] => 810
[0] => Array
(
[item] => 3
[quantity] => 1
[price] => 810
)
)
我期待这种O / P
Array
(
[0] => Array
(
[item] => 2
[quantity] => 2
[price] => 670
)
[1] => Array
(
[item] => 3
[quantity] => 1
[price] => 810
)
)
发生的事情是我使用php会话在购物车中添加了两个产品。我想将该会话变量添加到数组,然后使用serialize函数将其存储在数据库中。但是,我无法以如上所示的数组格式存储变量。
我甚至尝试过array_merge()函数和其他逻辑,但没有人给我这个输出。任何人都可以帮助我摆脱这种逻辑。在此先感谢_ / _
答案 0 :(得分:1)
像这样修改你的脚本。你也摆脱了无用的代码。
$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"];
}
答案 1 :(得分:1)
问题在于您正在重复使用变量$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
添加新元素。
测试if ($counter == 1)
也不需要为第一个条目做一些不同的事情。您应该在循环之前将$data
初始化为空数组。
$data = array();
答案 2 :(得分:0)
将其更改为:
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"]
);
}