我正在尝试拉$nsfw全局变量,但它根本没有显示任何内容。如果我在函数中回显它,它可以工作。但在外部,即使定义为全局,它也失败了。请在这里帮助我。
<?php
if(!function_exists('do_example_work'))
{
function do_example_work()
{
global $nsfw;
include("includes/dbconnect.php");
// Create connection
$conn = new mysqli($DBHOST, $DBUSER, $DBPASS, $DBNAME);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT fieldname FROM table WHERE name='$anything'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if ($row["fieldname"] == 1) {
// do somethin
$nsfw = 25;
exit();
} else {
echo "enjoy";
}
}
} else {
echo "0 results";
}
}
echo $nsfw;
};
?>
有支持和反对全局的争论。您可以搜索Stack和互联网并阅读:
- 全局变量在很多方面都是不好的,应尽可能避免
- 全局变量还不错,如果您知道自己是什么,则可以很好地/安全使用行为
手册:
http://php.net/manual/en/functions.user-defined.php
您似乎用这个基本的用户定义函数使事情过于复杂。
外
如果你想从函数中获取数据,只需使用 return 语句
function do_example_work() {
// Do some stuff here
$nsfw = 25;
return $nsfw; // Return where needed, in conditional statement or end of function
}
// Will echo "25"
echo do_example_work();
在
仅供参考:
要从外部将数据传入函数,只需将数据作为参数从外部传递到函数中:
function do_example_work($nsfw) {
/** The var "$nsfw" will have whatever data you pass in through the function call
* You can use it as required - check if $nsfw == something
* Or it might be database login details (urgh)
*/
echo $nsfw." - And words from in the function";
}
// Will echo "Pass in argument - And words from in the function"
do_example_work("Pass in argument");
变量
名称前面的关键字global
表示变量是在函数外部的某个地方定义的,现在我想使用该变量。它不会生成全局变量。因此,您需要在函数外部定义变量,然后可以使用前面的 global
关键字在函数内使用该变量。在您的代码中,我看不到您在函数外部定义变量。你只是在代码的底部回显它。
在
方法中保留全局变量的任何具体原因?将其移出方法,它应该对您有用。
或尝试全局,如下所示。
function doit() { $GLOBALS['val'] = 'bar'; } doit(); echo $val;
给出的输出为:
酒吧
或
<?php
foo();
bar();
function foo() { global $jabberwocky; $jabberwocky="test data<br>"; bar(); } function bar() { global $jabberwocky; echo $jabberwocky; } ?>