Какой правильный синтаксис при использовании foreach и mysqli_fetch_all - PullRequest
0 голосов
/ 14 ноября 2018

Как часть другой проблемы мне нужно использовать mysqli_fetch_all (который, как мне сказали, создает массив).Я никогда не использовал его раньше и не могу найти решения в Интернете, которые я могу понять.Я пытаюсь получить это, чтобы перечислить ключи и значения массива, который я создаю с mysqli_fetch_all.Как только я могу перечислить их, я могу получить к ним доступ и использовать их как часть более сложного кода.Я могу напечатать массив, но не получить ключи или значения в foreach, поэтому, если нет двух разных типов массивов, он кажется сложным.

$q5 = 'SELECT * FROM cities ORDER BY cityname';
$mytable5 = mysqli_query($conned, $q5);
$row5 = mysqli_fetch_all($mytable5, MYSQLI_ASSOC);
print_r($row5);
echo "<br><br>";
foreach ($row5 as $key => $value) {
    print "Key = " . $key . ". Value = " . $value . ".<br><br>";
}

Это вывод:

Array ([0] => Array ([countryid4city] => 44 [cityname] => Chelsea) [1] => Array ([countryid4city] => 44 [cityname] => Clapham) [2] => Массив ([countryid4city] => 46 [имя города] => Лидингё) [3] => Массив ([countryid4city] => 44 [имя города] => Лондон) [4] => Массив ([countryid4city] =>1 [cityname] => Нью-Йорк) [5] => Массив ([countryid4city] => 1 [cityname] => Сан-Франциско) [6] => Массив ([countryid4city] => 46 [cityname] => Стокгольм))

Ключ = 0. Значение = Массив.

Ключ = 1. Значение = Массив.

Ключ = 2. Значение = Массив.

Ключ= 3. Значение = Массив.

Ключ = 4. Значение = Массив.

Ключ = 5. Значение = Массив.

Ключ = 6. Значение = Массив.

1 Ответ

0 голосов
/ 28 июля 2019

mysqli_fetch_all возвращает массив массивов. Вам нужен еще один цикл для итерации двух измерений.

$q5 = 'SELECT * FROM cities ORDER BY cityname';
$mytable5 = mysqli_query($conned, $q5);
$results = mysqli_fetch_all($mytable5, MYSQLI_ASSOC);
echo "<br><br>";
foreach ($results as $row5) {
    foreach ($row5 as $key => $value) {
        print "Key = " . $key . ". Value = " . $value . ".<br><br>";
    }
}
...