2016-10-13 65 views
1

我有一个简单的查询,它在$_SESSION['cart_items']键内寻找相同的id。这是输出:在数组中插入数组PHP

enter image description here

,代码:

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

但我得到这样的输出:

enter image description here

正如你可以看到,有一个附加[1]=>23[3]=>47但是这不是我所希望发生的。我希望发生是这样的:

enter image description here

我想这是一个数组内的阵列的一部分。或者更像第五元素。我可以做这样的事吗?

回答

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); 
+0

This Works。我可以为新密钥添加一个名称吗? – FewFlyBy

+0

你是什么意思的新密钥? –

+0

没关系。非常感谢你! – FewFlyBy

1

它不插入到你的子阵列
,因为你把它变成你的主阵列是
的$的原因数据

SOLUTION:
推前
创建一个新变种iable

$newRow = $row; 

则:
把你的第5个元素

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

那么最后你把你的新行,其中包含您5元至$数据

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