2

であるユーザーのリストを表示する機能がありますdisplayUsers()

基本的に、ページごとに 1 つの異なる php ファイルを使用する代わりに、スイッチ関数を使用してコンテンツをロードしました。これはページの 1 の例です。

switch($_GET['page'])  {

   case '#userlist' : $page = '
       <div class="innerbox">
            displayUsers();
       </div> '; break;
}

ご覧のとおり、divタグを表示して関数をロードするはずですが、関数をロードする代わりに、テキスト「displayUsers()」を表示するだけです。なぜこれを行っているのかは理解していますが、表示するのではなく実際に機能を実行するように変更する方法がわかりません。どんな助けでも大歓迎です。

よろしく

4

4 に答える 4

4

displayUsers()は引用符で囲まれています。文字列として解釈されます。あなたがしたい

switch($_GET['page'])  {

   case '#userlist': $page = '<div class="innerbox">' . displayUsers() . '</div>'; break;

}

これは、displayUsers() がコードを返すと仮定して、文字列内に displayUsers() の戻り値を連結します。二重引用符で囲まれた文字列内の変数が解析されるこの機能を混乱させていたと思います。これは関数では機能しません。

使用することもできますcase '#userlist': $page = sprintf('<div class="innerbox">%s</div>', displayUsers(); break;

ここで sprintf について読んでください: http://php.net/manual/en/function.sprintf.php


実際にコード自体を出力する場合displayUsers()は、使用できます

switch($_GET['page'])  {

   case '#userlist': echo '<div class="innerbox">'; displayUsers(); echo '</div>'; break;

}

何が起こるかというと、開始タグが表示され、次に関数が呼び出され (コードが表示されます)、終了タグがこの順序で表示されます。


あなたが得ているならfunction not defined()、それはまさにそれがどのように聞こえるかです. 関数は現在のスクリプトで定義されていません。

PHP の仕組み ページが要求されるたびに (誰かが "foo.php" に移動します)、サーバーと PHP エンジンはディレクトリからファイル (foo.php) を取得して解析し、(通常は) 何かをユーザーに送り返します。 HTML ドキュメントの形式で。各ページは「スクリプト」のようなもので、コンパイルされて一度実行されると忘れられる小さなアプリケーションのようなものです。

displayUsers()それで、あなたが定義したあなたのホームページで言ってみましょう。

//index.php

function displayUsers() {
    //some code...
}

echo "Welcome to my website!", "<br />", 'Click <a href="foo.php">Here</a>.';

誰かがあなたのホームページにアクセスするdisplayUsers()と、定義されます。ただし、その後すぐに忘れられます。PHP エンジンは、スクリプトがロードされて終了した後にスクリプトを破棄しておりdisplayUsers()foo.php.


それで、あなたは何ができますか? 関数を 1 つのページでのみ使用している場合は、そのページで宣言します。各ファイルはスクリプトと見なされることに注意してください。PHP エンジンは、ユーザーのセッション全体で関数を追跡しません。

複数のスクリプトで関数を使用している場合は、関数を「中央」ファイルに含め、必要な場所に含めます。PHP とinclude; についてもっと読むことを強くお勧めします。PHP の基本については説明しません。あなたはもう少し宿題をする必要があります。

于 2012-07-11T17:22:05.260 に答える
1

を使用する必要があります。(ドット)シングルクォートを使用するときに文字列を追加するには:

$page = '<div class="innerbox">'.displayUsers().'</div>';
于 2012-07-11T17:21:33.883 に答える
0

連結.演算子を次のように使用します。

switch($_GET['page'])  {

   case '#userlist':
       $page = '
       <div class="innerbox">'
       . displayUsers() .
       '</div> ';
       break;
}
于 2012-07-11T17:23:29.933 に答える
0

これを試して

case '#userlist' : $page = '
           <div class="innerbox">'
                .displayUsers().
           '</div> '; break;
于 2012-07-11T17:22:09.407 に答える