2016-10-13 2 views
1

У меня есть простой запрос, который ищет один и тот же идентификатор внутри ключей $_SESSION['cart_items']. Это выход:Push Array внутри массива 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-ый элемент внутри массива. Значение будет исходить из значения ассоциативного массива $_SESSION['cart_items'][$row['id']] внутри цикла while. До сих пор, что я сделал:

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

Я хочу, чтобы это было частью массива внутри массива. Или больше, как 5-й элемент. Могу ли я сделать что-то вроде этого?

ответ

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

Это работает. Могу ли я добавить имя для нового ключа? – FewFlyBy

+0

Что вы подразумеваете под новым ключом? –

+0

Ничего. Большое спасибо! – FewFlyBy

1

причина не вставляется в ваш суб массив
, потому что вы толкнуть его в основной массив, который
за $ данные

РЕШЕНИЕ:
, прежде чем нажимать его
создать новый вар iable

$newRow = $row; 

затем:
Напрягите пятый элемент

$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); 
Смежные вопросы