2016-10-13 97 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);