PHP ждать функции - PullRequest
       16

PHP ждать функции

1 голос
/ 23 июня 2011

Это пример кода PHP;

<?php
function myFunc() {
    echo "blue";
}

for ($i=1;$i<=5;$i++) {
    echo "I like the colour " . myFunc() . "</br>";
}
?>

Это генерирует вывод;

blueI like the colour 
blueI like the colour 
blueI like the colour 
blueI like the colour 
blueI like the colour

В моем реальном проекте myFunc выполняет вызов MySQL (если онРазница с упоминанием этого).Как я могу заставить свой цикл ждать, пока эта функция вернется, прежде чем продолжить, иначе выход будет не в порядке, как указано выше.

Ответы [ 6 ]

3 голосов
/ 23 июня 2011

Попробуйте изменить код на это:

<?php
function myFunc() {
    return "blue";
}

for ($i=1;$i<=5;$i++) {
    echo "I like the colour " . myFunc() . "</br>";
}
?>

Обратите внимание на return вместо echo.

3 голосов
/ 23 июня 2011

Проблема в том, что myFunc() оценивается перед объединением.Верните значение из myFunc() и используйте его в своем цикле, а не выводите его в myFunc().

2 голосов
/ 23 июня 2011

Вы не хотите использовать echo в своей функции. Вместо этого используйте return.

Когда вы вычисляете цикл, функция сначала оценивается, чтобы увидеть, есть ли возвращаемое значение для вставки в строку. Поскольку вы вызываете echo, а не return, эхо от функции происходит, а затем эхо от цикла.

1 голос
/ 23 июня 2011

это не ваша проблема, ваша проблема в том, что у вас есть два действия.

you are concatenating a string
you are calling a function.

Строка результата - это конкатенация между "Мне нравится цвет".myFunc ().«», но прежде чем вы сможете объединить эти значения, вы должны выполнить myFunc ().

Когда вы выполняете myFunc, вы выводите «синий» в вывод.

тогда результат(для каждой строки).

blueI like the colour
(сначала оцените myFunc () и затем объедините возвращаемое значение (void) со статической строкой.

возможно, вы захотите сделатьчто:

<?php    
function myFunc() {
        return "blue";
    }
for ($i=1;$i<=5;$i++) {
    echo "I like the colour " . myFunc() . "</br>";
}

?>

1 голос
/ 23 июня 2011
  <?php
  function myFunc() {
      return "blue";
  }

  for ($i=1;$i<=5;$i++) {
      $color = myFunc();
      echo "I like the colour " . $color . "</br>";
  }
  ?>
1 голос
/ 23 июня 2011

Используйте инструкцию возврата:

 <?php
 function myFunc() {
     return "blue";
 }
...