Хотя цикл не работает, когда превращается в функцию

Я могу сделать эту работу:

function test1(){
$count = 1;
while($count < 8){
echo "Hello world1 <br>";
$count++;
}
}
test1();

И я могу сделать эту работу:

while($row = mysqli_fetch_array($result)){
echo "Hello world2<br>";
}

Но я не могу сделать эту работу:

function test2(){
while($row = mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}
test2();

Часть echo является заполнителем для чего-то другого, но почему не работает функция test2?

0

Решение

Единственное, о чем я могу думать, это то, что переменная результата не определена до того, как вы вызовете свою функцию. Вы можете попробовать передать его как параметр в вашей функции test2. Подобно:

function test2($result){
while($row = mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}
test2($result);
1

Другие решения

Так что это, вероятно, проблема сферы. Попробуйте повторить $row перед циклом while как одиночный запрос. Я могу представить, что ты еще ничего не увидишь. Я думаю, что test2 Функция не включает в себя правильную информацию о БД, которую вы имели, когда не было задействовано ни одной функции

Где $result приходящий из?

Функция не показывает, что $result будет равно

Определение объема из вики:

В компьютерном программировании область привязки имени — ассоциация имени с сущностью, такой как переменная, — это часть компьютерной программы, где привязка действительна: где имя может использоваться для ссылки на сущность.

Другими словами, когда у вас есть функция

 $test = 10;
foo();
echo $test; // = 10 not 1

foo(){
$test = 1;
}

Это потому что внутри $test ничего не знает о внешнем тесте.
Если переменная не объявлена ​​как global variable (которая является переменной, которая
можно понять по всем функциям). Но если она не была объявлена ​​как таковая, эта функция в некотором смысле не будет знать внешнему «миру».

Вы также можете передать переменную в качестве параметра, чтобы функция содержала эти результаты в своем scope

Что вы можете сделать, это:

 function func($result, $db){
while($row = $db->mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}

Теперь scope функции содержит $result и $db так что вы можете использовать их в функции

1

По вопросам рекламы [email protected]