コードブロック全体にわたる PHP 変数のスコープ
P粉771233336
2023-08-24 13:06:58
<p>私は PHP を初めて使用しており、まだ勉強中です。 </p>
<p>特定の変数を取得してそのプロパティにアクセスする必要があることがよくあります。 </p>
<pre class="brush:php;toolbar:false;"><?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
echo('ユーザー名: ' . $user_info->user_login . "<br>");
echo('ユーザーレベル: ' . $user_info->user_level . "<br>");
echo('ユーザー ID: ' . $user_info->ID . "<br>");
echo('名前: ' . $user_info->user_firstname . "<br>");
echo('姓: ' . $user_info->user_lastname . "<br>");
echo('登録時刻: ' . $user_info->user_registered . "<br>");
?></pre>
<p><code>$user_info = get_userdata($id);</ code> を取得し、必要に応じて使用することを好みます。 </p>
<pre class="brush:php;toolbar:false;"><?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
?>
<?php echo $user_info->user_login; ?>
<?php echo $user_info->user_login; ?></pre>
<p>しかし、<code>$user_info</code> はグローバルではないため、ブロック間で共有できないのではないかと思います。この状況での通常のアプローチは何ですか? </p>
コード ブロック ( ループ、条件文 ) 内で使用できますが、 関数 内では使用できません。関数内で使用したい場合は、
リーリーglobal
キーワードを使用する必要があります:PHP 変数のスコープについて詳しくは、公式ドキュメントをご覧ください:)
PHP コード ブロックに意味を込めすぎています。
これは世界的なものではありません。
これらのブロックは同じ PHP スクリプトに属します。これは HTML を出力するための単なる優れた方法であり、それ以外の意味はありません。これを echo HTML に置き換えても、何の違いもありません。
PHP スクリプト全体は、反復的な方法ではなく、一度に実行されます。ご想像のとおり、PHP ブロックがサーバー側で実行され、次に HTML ブロックがクライアント側で実行され、その後に戻ると考えてください。サーバー側で PHP ブロックを実行するなど。これは間違っています。
PHP スクリプト全体がサーバー側で実行され、その結果が純粋な HTML としてブラウザーに表示され、 で終了します。
そのため、同じ PHP スクリプト内で HTML フォームとそのハンドラーの両方を記述することはできません。後者を前者の後に置くだけです。ハンドラーを機能させるには、 サーバー を再度呼び出す必要があります。これはまったく異なる通話であり、同じスクリプトの別のインスタンスであり、前回の通話については何も知りません。この通話はずっと前に終了しました。これも PHP について知っておくべきことです:
PHP スクリプトの実行はアトミックです。これは、ブラウザ内で継続的に実行されるデスクトップ アプリケーションや、デスクトップ アプリケーションへの永続的な接続を維持するデーモンのようなものではありません。これはコマンド ライン ユーティリティに似ています。作業を実行して終了します。個別に実行されます: