PHP - обратный вызов функции? - PullRequest
0 голосов
/ 05 августа 2011

Возникли проблемы с этим ..

<?php

EG204_ExoSkel();

function EG204_ExoSkel() { 

    $to_be_end = 'Red';

    everything_loop();

}

function everything_loop() {

    echo $to_be_end;

}

?>

Приведенный выше код не будет отображать красный, поэтому я должен пытаться использовать функции в обратном направлении Может ли это быть возможным?

Все, что есть в функции «Все», должно быть отделено от разных циклов foreach.

Ответы [ 3 ]

4 голосов
/ 05 августа 2011

Попробуйте (отправьте в качестве аргумента)

<?php
EG204_ExoSkel();

function EG204_ExoSkel() {

    $to_be_end = 'Red';

    everything_loop($to_be_end);

}

function everything_loop($argument) {

    echo $argument;

}
?>

http://sandbox.phpcode.eu/g/3c1b6.php

0 голосов
/ 05 августа 2011

У вас обзор проблем. Объявление $to_be_end доступно только в функции EG204_ExoSkel.

Если вы хотите использовать его вне этой функции, вы должны использовать global, чтобы сделать его глобально доступным. А также добавить глобальный в другой функции (также для использования глобальной переменной). В результате чего:

EG204_ExoSkel();

function EG204_ExoSkel() { 
  global $to_be_end;    
  $to_be_end = 'Red';
  everything_loop();

}

function everything_loop() {
  global $to_be_end;
  echo $to_be_end;
}

Примечание : использование global считается плохой практикой и имеет тенденцию вносить беспорядок в ваш код (и даже вводить труднодоступные ошибки). Лучшее решение (если это возможно в вашем реальном коде) - передать переменную другой функции (функциям).

0 голосов
/ 05 августа 2011

Попробуйте ссылаться на $to_be_end как на глобальный!

ПРЕДУПРЕЖДЕНИЕ Глобальная плохая практика Избегать

<?php

EG204_ExoSkel();

function EG204_ExoSkel() { 

global $to_be_end;

$to_be_end = 'Red';

everything_loop();

}

function everything_loop() {

global $to_be_end;

echo $to_be_end;

}

?>
...