我有一个简单的查询,在$_SESSION['cart_items']
键中查找相同的ID。这是输出:
和代码:
$statement = $conn->query("SELECT * FROM product WHERE id IN (".implode(',',array_keys($_SESSION['cart_items'])).")");
$data = array();
while($row = $statement->fetch()) {
$data[] = $row;
}
print_r($data);
这很好但我想在数组中添加第5个元素。该值将来自while循环内的关联数组$_SESSION['cart_items'][$row['id']]
的值。到目前为止我做了什么:
while($row = $statement->fetch()) {
$data[] = $row;
if(array_key_exists($row['id'], $_SESSION['cart_items']))
{
$another = $_SESSION['cart_items'][$row['id']];
array_push($data, $another);
}
}
print_r($data);
但我得到了这个输出:
正如您所看到的,还有一个[1]=>23
和[3]=>47
,但这不是我想要发生的事情。我想要发生的是这样的事情:
我希望它成为数组内部数组的一部分。或者更像是第五元素。我可以这样做吗?
答案 0 :(得分:1)
试试这个并告诉我它是否适合你!
while($row = $statement->fetch()) {
if(array_key_exists($row['id'], $_SESSION['cart_items']))
{
$another = $_SESSION['cart_items'][$row['id']];
array_push($row, $another);
}
$data[] = $row;
}
print_r($data);
关于你的第二个问题,试试这个并告诉我
while($row = $statement->fetch()) {
if(array_key_exists($row['id'], $_SESSION['cart_items']))
{
$another = $_SESSION['cart_items'][$row['id']];
$new_row = $row+array("YOUR_TEXT" => $another);
}
$data[] = $new_row;
}
print_r($data);
答案 1 :(得分:1)
它未插入子阵列的原因
因为你将它推入你的主阵列
$ data
解决方案:
在推之前
创建一个新变量
$newRow = $row;
然后:
推动你的第五元素
$another = $_SESSION['cart_items'][$row['id']];
array_push($newRow, $another);
然后最后将包含第5个元素的新行推送到$ data
$data[] = $newRow;
所以你的新PHP代码就像这样
<?php
while($row = $statement->fetch()) {
$newRow = $row;
if(array_key_exists($row['id'], $_SESSION['cart_items']))
{
$another = $_SESSION['cart_items'][$row['id']];
array_push($newRow, $another);
}
$data[] = $newRow;
}
print_r($data);