将两个元素附加到二维数组的每一行

问题描述 投票:0回答:2

我有一个简单的查询,在

$_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);

这工作正常,但我想在数组中添加第五个元素。该值将来自 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
但这不是我想要发生的。我想要发生的是这样的事情:

我希望它成为数组内数组的一部分。或者更像第五元素。我可以做这样的事情吗?

php arrays multidimensional-array append array-push
2个回答
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
投票

它没有插入到你的子数组中的原因
因为你将它推入你的主数组中,即
$数据

解决方案:
在推动之前
创建一个新变量

$newRow = $row;

然后:
推动你的第五个元素

$another = $_SESSION['cart_items'][$row['id']];
array_push($newRow, $another);

最后将包含第五个元素的新行推送到 $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);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.