为什么在使用require调用时看不到我的变量?
function.php
<?php
function paginator(){
$links = array("index.php", "services.php", "content.php","contact_us.php" );
$trimslug = substr(strrchr($_SERVER['PHP_SELF'], "/"), 1);
foreach ($links as $key => $value) {
if ($value == $trimslug ) {
$GLOBALS['$page'] = $key;
}
}
$page = $GLOBALS['$page'];
$next = $page+1;
$previous = $page-1;
}
?>
content.php
<?php
session_start();
require './functions.php';
paginator();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Pagination</title>
</head>
<body>
<h2>Now on Page : <?php echo $page?></h2>
<a href="<?php echo $links[$next] ?>" >Next</a>
<br><br><br>
<a href="<?php echo $links[$previous]?>" >Previous</a>
<br>
</body>
</html>
我希望能够在使用require函数时看到我的变量,因为这段代码将出现在每一页上。这可能是一个非常低调的概念,但我真的希望有人能够恰当地说明这个概念。
这似乎有效,谢谢大家。
<?php
$links = array("index.php", "services.php", "content.php","contact_us.php" );
$trimslug = substr(strrchr($_SERVER['PHP_SELF'], "/"), 1);
$page = null;
function paginator(){
global $links,$trimslug,$next,$previous,$page;
foreach ($links as $key => $value) {
if ($value == $trimslug ) {
// $GLOBALS['$page'] = $key;
$page = $key;
}
}
$next = $page+1;
$previous = $page-1;
}
?>
答案 0 :(得分:0)
这是因为变量是在函数paginator();
的范围内定义的如果您希望它们在content.php的范围内可访问,请将它们声明为:
global $variable = 'value';
或者,只需在function.php中声明它们而无需函数&amp;它在content.php中的后续调用。
答案 1 :(得分:0)
PHP中的变量仅限于函数的范围,除非通过参数调用或添加到全局数组。
全球阵列是不好的做法,只是说。
你总是可以把变量变成私有类并根据需要调用它,虽然这对初学者来说非常棘手。
答案 2 :(得分:0)
paginator中的变量只在函数范围内,而不是php文件。如果要在该函数之外访问它们,只需将这些变量移到它之外。例如
$page=null;
$links=...
function paginator(){
...
}