gpt4 book ai didi

代码块之间的 PHP 变量作用域

转载 作者:IT王子 更新时间:2023-10-29 00:00:39 24 4
gpt4 key购买 nike

我是 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?> block

<?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不能在 block 之间共享,因为它不是全局的。通常的做法是什么?

最佳答案

你在 php 代码块中赋予了太多意义。
这不是全局性的。
这些 block 属于同一个 PHP 脚本。这只是一种输出 HTML 的巧妙方式,仅此而已。您可以将其替换为回显 HTML,不会有丝毫差异。

整个 PHP 脚本是一次执行的,而不是迭代执行的,正如您可能想象的那样,认为 PHP block 正在服务器端执行,然后 HTML block 在客户端执行,然后返回到服务器上的 PHP block 边等。错了。
整个 PHP 脚本在服务器端执行,结果是浏览器中的纯 HTML,然后死掉。

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

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

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

关于代码块之间的 PHP 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com