0

为什么用 require 调用时看不到我的变量?

函数.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;
}



?>  

内容.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;
}

?>
4

3 回答 3

0

这是因为变量是在函数 paginator() 的范围内定义的;

如果您希望它们在 content.php 范围内可访问,请像这样声明它们:

global $variable = 'value';

或者,只需在 function.php 中声明它们而不需要该函数,它是 content.php 中的后续调用。

于 2013-03-31T21:20:00.123 回答
0

PHP 中的变量仅限于函数的范围,除非通过参数调用或添加到全局数组中。

全局数组是不好的做法,只是说。

您总是可以将变量放入私有类并根据需要调用它,尽管这对初学者来说非常棘手。

于 2013-03-31T21:20:58.197 回答
0

paginator 里面的变量只在函数的作用域内,不在php文件中。如果您想在该函数之外访问它们,只需将这些变量移到该函数之外。例如

$page=null;
$links=...
function paginator(){
...
}
于 2013-03-31T21:22:12.453 回答