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 の基本については説明しません。あなたはもう少し宿題をする必要があります。