我试图拉动全局变量$ 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;
};
?>
答案 0 :(得分:1)
变量名前面的关键字global
表示变量是在函数外部的某处定义的,现在我想使用该变量。它不会生成全局变量。因此,您需要在函数外部定义变量,然后您可以使用前面的global
关键字在函数内部使用该变量。
在你的代码中,我看不到你在函数之外定义变量。您只是在代码底部回显它。
答案 1 :(得分:1)
赞成和反对Globals。您可以搜索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");
答案 2 :(得分:0)
将全局变量保留在方法中的任何特定原因??将它移到方法之外,它应该适用于你。
或者 尝试GLOBALS,如下所示。
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; } ?>