2016-10-19 3 views
1

Мне нужен массив со списком имен, поэтому я просто получаю их из базы данных, но когда я печатал массив, я заметил, что он хранит каждое имя в отдельный массив. Почему это, и как я могу просто хранить их в одном?Почему я получаю многоуровневый массив?

Мой код:

<? 
// Product names 
$producten    = "SELECT `naam` FROM `producten`"; 
$productencon   = $conn->query($producten); 
$productencr   = array(); 
while ($productencr[] = $productencon->fetch_array()); 
echo '<pre>'; 
print_r($productencr); 
echo '</pre>'; 
?> 

Выход напечатанного массива заключается в следующем:

enter image description here

ответ

2

Поскольку fetch_array возвратит как имя ассоциативного столбца и числовой индекс.

Если вы хотите, только имя столбца, вы должны использовать: fetch_assoc или если вы хотите только числовые вы должны использовать fetch_row

fetch_array представляет собой сочетание обоих fetch_assoc и fetch_row

Если вы хотите сохранить fetch_array вы также можете указать в качестве первого параметра тип результата. По умолчанию MYSQLI_BOTH.

Вы проверяете больше здесь: http://php.net/manual/en/mysqli-result.fetch-array.php

+0

Alright имеет смысл, но когда я изменить его в FETCH_ASSOC, он по-прежнему помещает каждое имя в отдельном массиве. Просто без числовых значений – twan

+0

@twan Да, так оно и работает. Потому что вы можете выбрать несколько столбцов из базы данных. –

+0

Есть ли простой способ получить все имена в один массив? – twan

0

Попробуйте

$output=array(); 
while ($productencr = $productencon->fetch_array()){ 
    $output[]=$productencr["naam"]; 
} 
echo '<pre>'; 
print_r($output); 
echo '</pre>'; 
Смежные вопросы