ホームページ  >  に質問  >  本文

コードブロック全体にわたる PHP 変数のスコープ

<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>
P粉771233336P粉771233336394日前554

全員に返信(2)返信します

  • P粉617237727

    P粉6172377272023-08-25 09:32:59

    コード ブロック ( ループ、条件文 ) 内で使用できますが、 関数 内では使用できません。関数内で使用したい場合は、global キーワードを使用する必要があります:

    リーリー

    PHP 変数のスコープについて詳しくは、公式ドキュメントをご覧ください:)

    返事
    0
  • P粉466909449

    P粉4669094492023-08-25 09:01:17

    PHP コード ブロックに意味を込めすぎています。
    これは世界的なものではありません。
    これらのブロックは同じ PHP スクリプトに属します。これは HTML を出力するための単なる優れた方法であり、それ以外の意味はありません。これを echo HTML に置き換えても、何の違いもありません。

    PHP スクリプト全体は、反復的な方法ではなく、一度に実行されます。ご想像のとおり、PHP ブロックがサーバー側で実行され、次に HTML ブロックがクライアント側で実行され、その後に戻ると考えてください。サーバー側で PHP ブロックを実行するなど。これは間違っています。
    PHP スクリプト全体がサーバー側で実行され、その結果が純粋な HTML としてブラウザーに表示され、 で終了します。

    そのため、同じ PHP スクリプト内で HTML フォームとそのハンドラーの両方を記述することはできません。後者を前者の後に置くだけです。ハンドラーを機能させるには、 サーバー を再度呼び出す必要があります。これはまったく異なる通話であり、同じスクリプトの別のインスタンスであり、前回の通話については何も知りません。この通話はずっと前に終了しました。これも PHP について知っておくべきことです:

    PHP スクリプトの実行はアトミックです。これは、ブラウザ内で継続的に実行されるデスクトップ アプリケーションや、デスクトップ アプリケーションへの永続的な接続を維持するデーモンのようなものではありません。これはコマンド ライン ユーティリティに似ています。作業を実行して終了します。個別に実行されます:

    1. ブラウザが通話を開始します
    2. PHP が起動し、HTML ページを作成し、ブラウザに送信して そして終了します
    3. ブラウザは HTML をレンダリングしてユーザーに表示します。
    4. ユーザーがリンクをクリックする
    5. ブラウザが通話を開始します
    6. 別の PHP インスタンスは、前の呼び出しについて何も知らずに起動します など
    7. 返事
      0
  • キャンセル返事