PHP будет отображать данные $ _POST, но не позволит мне их сохранить - PullRequest
1 голос
/ 05 августа 2010

Хорошо, странная проблема. У меня есть следующий код php:

<?php

$identifier = $_POST['DEPT'];

function displaydata(){
  return $identifier;
}

?>

HTML CODE HERE

<?php echo displaydata(); ?>

Это приводит к пустой странице. Тем не менее, когда я заменяю

function displaydata(){
  return $identifier;
}

с

function displaydata(){
  return $_POST['DEPT'];
}

он точно печатает запрошенную информацию.

Есть подсказка, что здесь происходит?

Ответы [ 5 ]

7 голосов
/ 05 августа 2010

Вам нужно объявить global $identifier в вашей функции. PHP не ищет в глобальной области видимости неопределенные переменные за пределами суперглобальных.

См .: http://php.net/manual/en/language.variables.scope.php

2 голосов
/ 05 августа 2010

В вашем коде у вас есть две переменные $ идентификатора . Одним из них является локальная переменная displaydata (). Другой идентификатор $, которому присваивается значение $ _POST, выходит за рамки функции displaydata ().

Однако $ _POST является суперглобальным . Это означает, что он всегда доступен во всех областях. Вот почему это работает:

<?php
function displaydata(){
    return $_POST['DEPT'];
}
?>

Если вы хотите передать информацию локальным переменным внутри displaydate, используйте аргумент:

<?php
displaydate($_POST['DEPT']);

function displaydata($identifier){
    return $identifier;    
}
?>

Хотя в этом случае область отображаемых данных включает в себя $ _POST, поскольку $ _POST является суперглобальным.

1 голос
/ 05 августа 2010

$ идентификатор находится в локальной области

1 голос
/ 05 августа 2010

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

0 голосов
/ 05 августа 2010
<?php

    $identifier = $_POST['DEPT'];

    function displaydata($idefier){
      return $idefier;
    }
    displaydata($identifier);
    ?>

попробуй это. Вы должны передать значение в функцию или объявить идентификатор $ глобальным

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