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;
}



?>  

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;
}

?>
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 に答える