好的,奇怪的问题。我有以下PHP代码:
<?php
$identifier = $_POST['DEPT'];
function displaydata(){
return $identifier;
}
?>
HTML CODE HERE
<?php echo displaydata(); ?>
这会产生一个空白页面。但是,当我更换
function displaydata(){
return $identifier;
}
带
function displaydata(){
return $_POST['DEPT'];
}
它准确地打印出所请求的信息。
有什么想法在这里发生了什么?
答案 0 :(得分:7)
您需要在函数中声明global $identifier
。 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声明为全局