Heim  >  Fragen und Antworten  >  Hauptteil

Variablenbereich zwischen PHP-Codeblöcken

Ich bin (noch) neu in PHP und lerne mit der Zeit dazu.

Ich muss oft eine bestimmte Variable abrufen und auf ihre Eigenschaften zugreifen.

<?php
      $id = $_REQUEST['id'];
      $user_info = get_userdata($id);

      echo('Username: '        . $user_info->user_login . "<br>");
      echo('User level: '      . $user_info->user_level . "<br>");
      echo('User ID: '         . $user_info->ID . "<br>");
      echo('First Name: '      . $user_info->user_firstname . "<br>");
      echo('Family Name: '     . $user_info->user_lastname . "<br>");
      echo('user_registered: ' . $user_info->user_registered . "<br>");
?>

Ich ziehe es vor, $user_info = get_userdata($id); einmal abzurufen und es dann bei Bedarf zu verwenden In derselben Datei, aber in verschiedenen <?php?>Blöcken

<?php
    $id = $_REQUEST['id'];
    $user_info = get_userdata($id);
?>

<some HTML>

<?php echo $user_info->user_login; ?>

<some HTML>

<?php echo $user_info->user_login; ?>

Aber ich vermute, dass $user_info nicht zwischen Blöcken geteilt werden kann, da es nicht global ist. Was ist der übliche Ansatz?

P粉403821740P粉403821740333 Tage vor608

Antworte allen(2)Ich werde antworten

  • P粉713846879

    P粉7138468792023-10-23 13:15:37

    您可以在块(循环、if 语句)中使用它,但不能在函数内使用它。为了使其在函数内部工作,您必须使用 global 关键字:

    $user_info ....... //declared outside
    
    function foo(){
       global $user_info // now available here too
    
       // more code
    }

    您可以在官方文档上阅读有关 PHP 变量作用域的更多信息 :)< /a>

    Antwort
    0
  • P粉262926195

    P粉2629261952023-10-23 09:09:44

    您在 php 代码块中赋予了太多含义。
    这不是全球性的事情。
    这些块属于同一个 PHP 脚本。这只是输出 HTML 的一种巧妙方式,仅此而已。您可以用回显 HTML 来替换它,不会有丝毫差异。

    整个 PHP 脚本立即执行,而不是迭代执行,正如您可能想象的那样,认为 PHP 块在服务器端执行,然后 HTML 块在客户端执行,然后返回到服务器上的 PHP 块边等。这是错误的。
    整个 PHP 脚本在服务器端执行,在浏览器中生成纯 HTML,然后消失。

    这就是为什么您不能在同一个 PHP 脚本中同时对 HTML 表单及其处理程序进行编程,只需将后者放在前者之后。您必须再次调用服务器才能使处理程序正常工作。这将完全是另一个调用,同一脚本的另一个实例,对先前的调用一无所知,而该调用早已死亡。这是您必须了解的有关 PHP 的另一件事:

    PHP 脚本执行是原子的。它不像在浏览器中不断运行的桌面应用程序,甚至不像与桌面应用程序持续连接的守护程序。它更像是一个命令行实用程序 - 完成其工作并退出。它独立运行:

    1. 浏览器进行调用
    2. PHP 唤醒,创建 HTML 页面,将其发送到浏览器然后终止
    3. 浏览器呈现该 HTML 并将其显示给用户。
    4. 用户点击链接
    5. 浏览器进行调用
    6. 另一个 PHP 实例,对之前的调用一无所知,被唤醒等等

    Antwort
    0
  • StornierenAntwort