Heim  >  Fragen und Antworten  >  Hauptteil

PHP-Variablenbereich über Codeblöcke hinweg

<p>Ich bin PHP-Neuling und lerne immer noch. </p> <p>Ich muss oft eine bestimmte Variable abrufen und auf ihre Eigenschaften zugreifen. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); echo('Benutzername: ' . $user_info->user_login . "<br>"); echo('Benutzerebene: ' . $user_info->user_level . "<br>"); echo('Benutzer-ID: ' . $user_info->ID . "<br>"); echo('Name: ' . $user_info->user_firstname . "<br>"); echo('Nachname: ' . $user_info->user_lastname . "<br>"); echo('Registrierungszeit: ' . $user_info->user_registered . "<br>"); ?></pre> <p>Ich ziehe es vor,<code>$user_info = get_userdata($id);</ code> abzurufen und es dann bei Bedarf zu verwenden. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); ?> <Etwas HTML> <?php echo $user_info->user_login; <Etwas HTML> <?php echo $user_info->user_login ?></pre> <p>Aber ich vermute, dass <code>$user_info</code> nicht zwischen Blöcken geteilt werden kann, da es nicht global ist. Was ist in dieser Situation die übliche Vorgehensweise? </p>
P粉771233336P粉771233336445 Tage vor598

Antworte allen(2)Ich werde antworten

  • P粉617237727

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

    你可以在代码块中使用它(循环,条件语句),但不能在函数内使用。如果要在函数内使用它,你需要使用global关键字:

    $user_info ....... //在外部声明
    
    function foo(){
       global $user_info // 现在也可以在这里使用
    
       // 更多代码
    }

    你可以在官方文档中了解更多关于PHP变量作用域的内容 :)

    Antwort
    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实例,对之前的调用一无所知,唤醒等等

    Antwort
    0
  • StornierenAntwort