PHP变量作用域的跨代码块范围
P粉771233336
P粉771233336 2023-08-24 13:06:58
0
2
459
<p>我对PHP还很陌生,正在不断学习。</p> <p>我经常需要检索特定的变量并访问它的属性。</p> <pre class="brush:php;toolbar:false;">&lt;?php $id = $_REQUEST['id']; $user_info = get_userdata($id); echo('用户名: ' . $user_info-&gt;user_login . "&lt;br&gt;"); echo('用户级别: ' . $user_info-&gt;user_level . "&lt;br&gt;"); echo('用户ID: ' . $user_info-&gt;ID . "&lt;br&gt;"); echo('名字: ' . $user_info-&gt;user_firstname . "&lt;br&gt;"); echo('姓氏: ' . $user_info-&gt;user_lastname . "&lt;br&gt;"); echo('注册时间: ' . $user_info-&gt;user_registered . "&lt;br&gt;"); ?&gt;</pre> <p>我更喜欢在同一个文件中的不同<code>&lt;?php?&gt;</code>块中一次检索<code>$user_info = get_userdata($id);</code>,然后在需要时使用它。</p> <pre class="brush:php;toolbar:false;">&lt;?php $id = $_REQUEST['id']; $user_info = get_userdata($id); ?&gt; &lt;一些HTML&gt; &lt;?php echo $user_info-&gt;user_login; ?&gt; &lt;一些HTML&gt; &lt;?php echo $user_info-&gt;user_login; ?&gt;</pre> <p>但我怀疑<code>$user_info</code>不能在块之间共享,因为它不是全局的。这种情况下通常的做法是什么?</p>
P粉771233336
P粉771233336

Antworte allen(2)
P粉466909449

您将太多的意义放在了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实例,对之前的调用一无所知,唤醒等等
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!