#php #arrays
#php #массивы
Вопрос:
Мне нужен массив со списком имен, поэтому я просто получаю их из базы данных, но когда я распечатал массив, я заметил, что он хранит каждое имя в отдельном массиве. Почему это так, и как я могу просто сохранить их в одном?
Мой код:
<?
// 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>';
?>
Вывод этого печатного массива таков:
Ответ №1:
Потому что 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
Комментарии:
1. Хорошо, это имеет смысл, но когда я меняю его на fetch_assoc , он по-прежнему помещает каждое имя в отдельный массив. Только без числовых значений
2. @twan Да, именно так это и работает. Потому что вы можете выбрать несколько столбцов из базы данных.
3. Есть ли простой способ собрать все имена в один массив?
4. Я исправил это сам, используя
array_map('current', $productencr)
Спасибо, что помогли мне на этом пути!
Ответ №2:
Попробуйте это
$output=array();
while ($productencr = $productencon->fetch_array()){
$output[]=$productencr["naam"];
}
echo '<pre>';
print_r($output);
echo '</pre>';