Как: объединить массив php, созданный из запроса mysql?

Я работаю над генератором имен игроков с использованием MYSQL / PHP. Как мне выбрать значения таблицы с одним столбцом (не включая первичный ключ) в одномерный массив, а затем объединить значения массива?

пример таблицы syllableInitials:

characters
t
d
ch

PHP код

$syllable = array("","","");

$sql = "SELECT characters FROM syllableInitials";
$result = $conn->query($sql);

$syllableInitials = array();

while ($initial = mysqli_fetch_row($result)) {
    $syllableInitials[] = $initial;
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");

$syllable[0] = $syllableInitials[0] . $syllableMedials[2] . $syllableFinals[0];

echo "Syllable is: <b>" . $syllable[0] . "</b>";

Вывод, который я получаю:

Примечание: преобразование массива в строку в строке ... Слог: Arrayim

Очевидно, что мой предполагаемый результат для приведенного выше примера кода будет «tim», а не «Arrayim».

print_r для массива syllableInitials генерирует это ...

Array (
     [0] => Array ( [0] => t )
     [1] => Array ( [0] => d ) 
    [2] => Array ( [0] => ch )
)

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку $ initial является массивом и имеет один элемент, вы можете:

$syllableInitials[] = $initial[0];

Но лучшим решением было бы использовать PDO с его функцией PDOStatement :: fetchColumn.

Например:

$syllable = array("","","");

$options = array(
    PDO::ATTR_PERSISTENT => true,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);

$dbh = new PDO('mysql:dbname=dbname;host=127.0.0.1', 'username', 'password', $options);

$sth = $dbh->prepare('SELECT characters FROM syllableInitials');
$sth->execute();

$syllableInitials = array();

while ($initial = $sth->fetchColumn()) {
    $syllableInitials[] = $initial;
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");

$syllable[0] = $syllableInitials[0] . $syllableMedials[2] . $syllableFinals[0];

echo "Syllable is: <b>" . $syllable[0] . "</b>";

Изменение $ initial на $ initial [0] внутри цикла while сделало это - спасибо @ankabout! (Я уже использую mysqli, иначе попробовал бы fetchColumn () ...)

Mad Villager 03.11.2018 22:11

Это должно дать вам "tim":

$syllable[0] = $syllableInitials[0][0] . $syllableMedials[2] . $syllableFinals[0];

В вашем коде вы указываете только на другой массив внутри [0];

Array (
     [0] => **Array ( [0] => t )**
     [1] => Array ( [0] => d ) 
     [2] => Array ( [0] => ch )
)

Так что у вас есть два варианта ..

Первый:

$syllable = array("","","");

$sql = "SELECT characters FROM syllableInitials";
$result = $conn->query($sql);

$syllableInitials = array();

while ($initial = mysqli_fetch_row($result)) {
    $syllableInitials[] = $initial[0];
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");

$syllable[0] = $syllableInitials[0] . $syllableMedials[2] . $syllableFinals[0];

echo "Syllable is: <b>" . $syllable[0] . "</b>";

Второй:

$syllable = array("","","");

$sql = "SELECT characters FROM syllableInitials";
$result = $conn->query($sql);

$syllableInitials = array();

while ($initial = mysqli_fetch_row($result)) {
    $syllableInitials[] = $initial;
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");

$syllable[0] = $syllableInitials[0][0] . $syllableMedials[2] . $syllableFinals[0];

echo "Syllable is: <b>" . $syllable[0] . "</b>";

но если мне просто нужен одномерный массив из таблицы с одним столбцом, зачем вообще иметь дело с вложенными / многомерными массивами?

Mad Villager 03.11.2018 23:39

Лучше всего этого избежать.

jeastogg 04.11.2018 00:18

Другие вопросы по теме