PHP: использовать значение из массива в операторе if внутри функции - PullRequest
0 голосов
/ 28 октября 2011

У меня есть следующий код, который отлично работает со своим кодом:

    if ($progressData[1] == "yes") {

        echo "Complete";
    }
    else

        echo "Not Yet Complete";

Однако я хотел бы вызвать его из функции:

function progressOutput () {

    if ($progressData[1] == "yes") {

        echo "Complete";
    }
    else

        echo "Not Yet Complete";

}   

Когда я вызываю progressOutput(), я получаю «Еще не завершено», хотя $progressData[1] равно «да».

Вот как я вызываю функцию:

Mission Status: <?php progressOutput(); ?>

Что мне делатьнужно сделать, чтобы progressOutput() вернул "Complete", когда $progressData[1] фактически равен "yes"?

Ответы [ 4 ]

3 голосов
/ 28 октября 2011

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

Ваша функция должна принять аргумент:

function progressOutput ($progressData) {
    if ($progressData[1] == "yes")
        echo "Complete";
    else
        echo "Not Yet Complete";
}   

Икогда вы вызываете его, вы должны указать аргумент:

Mission Status: <?php progressOutput($progressData); ?>

Обычно вашей функции плохо выводить данные напрямую;Вы можете очистить его, возвращая значение, а не отображая его:

function progressOutput ($progressData) {
    if ($progressData[1] == "yes")
        return "Complete";
    return "Not Yet Complete";
}  

И выводя значение, возвращаемое функцией:

Mission Status: <?= progressOutput($progressData); ?>
2 голосов
/ 28 октября 2011

Поиск переменная область видимости в PHP. Переменные PHP не «просачиваются» в нижние области и должны быть явно объявлены глобальными в нижних областях, чтобы они стали видимыми.

function progressOutput() {
   global $progressData;
   etc...
}

Другой вариант - передать параметр progressData в качестве параметра:

progressOutput($data);

function progressOutput($progressData) {
    ....
}
0 голосов
/ 28 октября 2011

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

Для того, чтобы вы могли на global переменную, подобную этой:

global $progressData;

после этого вы можете использовать его.

Или вам следует передать переменную в функцию:

progressOutput(progressData[1]);
0 голосов
/ 28 октября 2011

$ progressData не входит в объем вашей функции Вы должны передать его в вашу функцию.

функция progressOutput ($ progressData) { // это будет доступно здесь и сейчас }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...