PHP将回显$ _POST数据,但不会让我存储它

时间:2010-08-05 17:07:56

标签: php forms post

好的,奇怪的问题。我有以下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 个答案:

答案 0 :(得分:7)

您需要在函数中声明global $identifier。 PHP不会自动查找超全局变量之外的未定义变量的全局范围。

请参阅:http://php.net/manual/en/language.variables.scope.php

答案 1 :(得分:2)

在您的代码中,您有两个$标识符变量。一个是displaydata()的局部变量。分配了$ _POST值的另一个$ identifier超出了displaydata()函数的范围。

然而$ _POST是 superglobal 。这意味着它始终适用于所有范围。这就是为什么这样做的原因:

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

如果要将信息传递给displaydate内的局部变量,请使用参数:

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

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

虽然在这种情况下displaydata的范围包括$ _POST,因为$ _POST是一个超全局。

答案 2 :(得分:1)

如上所述,将标识符变量设为全局,或者更好地将$ identifer作为参数传递给函数。根据我的经验,Globals可以在更大的应用程序中进行硬调试。 一般来说,通常有一个更好的方法,而不仅仅是折腾全球。

答案 3 :(得分:1)

$ identifier在本地范围内

答案 4 :(得分:0)

<?php

    $identifier = $_POST['DEPT'];

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

试试这个。您必须将值传递给函数或将$ identifier声明为全局