当前位置: 首页 > 面试题库 >

代码块之间的PHP变量范围

伊铭
2023-03-14
问题内容

我是PHP新手(仍然),并且继续学习。

我经常必须检索某个变量并访问其属性。

<?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>");
?>

我希望一次检索一次$user_info = get_userdata($id);,然后在需要时在同一文件中但在不同<?php?>块中使用它

<?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; ?>

但是我怀疑$user_info不能在块之间共享,因为它不是全局的。通常的做法是什么?


问题答案:

您在php代码块中放置了太多含义。
这不是全球性的事情。
这些块属于同一PHP脚本。这只是输出HTML的一种简洁方法,仅此而已。您可以用回显HTML代替它,不会有丝毫差别。

整个PHP脚本是一次执行,而不是迭代执行,就像您可能想象的那样,认为PHP块是在服务器端执行的,然后是HTML块在客户端执行的,然后是服务器端的PHP块等等。上。错了
整个PHP脚本在服务器端执行,在浏览器中生成纯HTML, 然后死亡。

这就是为什么不能通过仅将HTML表单及其处理程序放在前一个PHP脚本之后的方式来在同一个PHP脚本中对HTML表单及其处理程序进行编程的原因。您
必须再次调用服务器 才能使处理程序正常工作。这将完全是另一个调用,是同一脚本的另一个实例,完全 不知道先前调用
已经死了很久。这是关于PHP的另一件事:

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

  1. 浏览器拨打电话
  2. PHP唤醒,创建HTML页面,将其发送到浏览器 并死亡
  3. 浏览器呈现该HTML并将其显示给用户
  4. 用户点击链接
  5. 浏览器拨打电话
  6. 另一个PHP实例,不知道先前的调用,将唤醒 ,依此类推


 类似资料:
  • 问题内容: 这将编译 这不会 我希望两者都能编译(也许这是C的工作方式?)。是什么原因导致无法在外部块中以相同的名称声明一个块中的变量? 问题答案: 简短的答案是:因为这是JLS§6.4中定义Java语言的方式。 您可能从其他语言中使用过,因此允许使用所谓的可变阴影。但是,Java语言的发明者认为这是一个笨拙的功能,他们不希望使用其语言: 此限制有助于检测其他一些非常模糊的错误。 但是,正如作者在

  • 问题内容: 对于一个学校项目,我正在用Python制作子手游戏。现在,我的代码从字典中选择一个单词,如下所示: 现在,必须在运行之前在代码中设置单词列表,但是我添加了在运行时将单词添加到列表中的功能: 但是,一旦退出代码,显然不会保存添加的单词,因此,我将不得不手动将所有单词添加到列表中,或者每次代码启动后都将一堆单词添加到列表中。所以我想知道是否有一种简单的方法可以在代码完成后保存变量,以便Wo

  • 问题内容: 我有php文件index.php 在此文件中,我正在使用html代码: index.php 在href中,我想输入一些php变量的值,即 怎么做? 这是正确的方法吗? 问题答案: 您可以通过结束并重新启动来连接字符串: 尽管我个人更喜欢停止PHP标记并重新启动它们(如果我有很多HTML),因为我的IDE不会语法突出显示HTML,因为它是一个字符串:

  • 问题内容: main.py: module.py 程序打印: 主要-之前:20 func2:20 func1:10 主-20点后 “ var”是全局变量。我希望当我更改var的值时,无论变量’var’出现在哪里,它都会被更改。func1和func2之间的唯一区别是func1在另一个模块中。仍然,我不明白为什么func1和func2之间的’var’值不同。 问题答案: python中没有真正的全局变

  • 我有两个php脚本:main.php和script.php。 我正在将变量从main.php发送到script.php。在script.php文件中,我使用这个变量从MySQL数据库中获取某些数据。这个数据存储在变量中,需要发送回main.php文件。 为了在两个文件之间传输变量,我使用,但在打开main.php文件时,我得到一个。 在脚本之间传输这两个变量的正确方法是什么? main.php s

  • 问题内容: 我想在一个页面中获取用户输入,将其存储在一个php变量中,并在另一个php页面中使用它。我已经尝试过使用“会话”,但是它似乎没有用。还有另一种安全的选择吗?此信息可能是用户名和密码。 问题答案: 尝试更改会话代码,因为这是执行此操作的最佳方法。 例如: index.php nextpage.php 但是,我可能会在会话中存储更安全的内容(例如用户ID),而不是用户的登录凭据。