我是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>");
?>
Run Code Online (Sandbox Code Playgroud)
我宁愿一次检索$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; ?>
Run Code Online (Sandbox Code Playgroud)
但我怀疑$user_info无法在块之间共享,因为它不是全局的.通常的做法是什么?
You*_*nse 34
你在php代码块中添加了太多意思.
这不是全球性的.
这些块属于同一个PHP脚本.它只是输出HTML的一种简洁方式,仅此而已.您可以用回显HTML替换它,并且没有丝毫差异.
整个PHP脚本一次执行,而不是迭代,因为您可能想到这一点,认为PHP块正在服务器端执行,然后HTML阻塞客户端,然后回到服务器端的PHP块,所以上.那是错的.
整个PHP脚本正在服务器端执行,在浏览器中生成纯HTML.
这就是为什么你不能在同一个PHP脚本中编写HTML表单及其处理程序的原因,只需在第一个脚本之后放置后者即可.您将不得不再次调用服务器以使处理程序工作.完全是另一个调用,同一个脚本的另一个实例,而前一个已经很久了 - 这是你必须了解的关于PHP的另一件事:
PHP脚本执行是原子的.它不像是在浏览器中不断运行的桌面应用程序,甚至不是与桌面应用程序持久连接的守护程序.它更像是一个命令行实用程序 - 完成它的工作并退出.它是独立运行的:
您可以在块(循环,if语句)中使用它,但不能在函数内使用它.要使其在函数内部工作,您必须使用以下global关键字:
$user_info ....... //declared outside
function foo(){
global $user_info // now available here too
// more code
}
Run Code Online (Sandbox Code Playgroud)
即使$user_info没有声明global,也可以在几个PHP块中使用:你发布的内容应该有用;-)
有趣的手册页就是这个:变量范围 ; 引用:
在大多数情况下,所有PHP变量只有一个范围.
此单一范围也涵盖包含和所需文件.
如果范围跨越其他文件(但不是那些文件中的函数!),它也可能跨越同一文件中的不同php块;-)
基本上,你有:
你是第一种情况,你的例子.