PHP 代码块之间的变量范围

2023-11-26

我对 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?> blocks

<?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,然后死了。

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

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

  1. 浏览器进行调用
  2. PHP 唤醒,创建 HTML 页面,并将其发送到浏览器and dies
  3. 浏览器呈现该 HTML 并将其显示给用户。
  4. 用户点击链接
  5. 浏览器进行调用
  6. 另一个 PHP 实例,对之前的调用一无所知,被唤醒等等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 代码块之间的变量范围 的相关文章

  • 如何确定 n 高数字金字塔中的最大路线成本

    我有一个像这样的数字金字塔 7 4 8 1 8 9 2 4 6 7 4 6 7 4 9 4 9 7 3 8 8 routes 32 每个数字都按其系列中的强大程度进行索引 0 9 gt 1 1 8 gt 5 2 8 gt 4 3 7 gt
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 当存在联系时如何为数组分配排名号

    当尝试为数组中存在平局的数值分配排名时 我很难知道从哪里开始 因此 例如 我需要像下面这样转换一个数组 myarray 4 76 34 13 34 到另一个数组中 例如 myarray2 1 5 3 5 2 3 5 基本上 当相同的数字在数
  • 将 jQuery 数组字符串转换为 PHP 数组

    首先 我得说我对 PHP 还很陌生 我正在尝试获取一个可以使用 foreach 的 PHP 对象 以下字符串通过 ajax 传递 我正在尝试转动以下字符串 menu title TEST1 href title TEST2 href QWE
  • 如何为 Lumen 的封闭路线指定路线名称?

    您好 我有以下流明路线 router gt get end function Illuminate Http Request request use router controller router gt app gt make App H
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • Laravel 5 与 SAML 2 和现有 IDP 集成

    我使用 Laravel 5 我正在尝试将 SAML 2 0 与其集成 我找到了这个包 https github com aacotroneo laravel saml2 https github com aacotroneo laravel
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 配置 .htaccess 以在 PHP 框架 (Silex) 上工作

    我的 Apache2 本地主机 linux 上有一个工作路径 http localhost lab silex web index php hello name 我想成为 http localhost lab silex hello nam
  • 如何在javascript中使用自动递增id?

  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • 如何创建环境变量来保护我的网站的 Google 地图 API 密钥(或任何其他秘密值)?

    我正在学习使用 Bootstrap 编写自己的网站 并使用 Google 地图 API 密钥和 Google Developers 的脚本轻松地将地图放置在我的页面上 理想情况下 我会有类似的东西 即我已经尝试过这个 Html PHP
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • 避免 SQLite3 中的 SQL 注入

    我正在尝试找出一种避免 SQL 注入的好简单方法 到目前为止我只能提出两个想法 对用户输入进行 Base64 编码 其实不想这样做 使用正则表达式删除不需要的字符 目前正在使用这个 不确定是否100 安全 这是我当前的代码
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar

随机推荐

  • 主脑极小极大算法

    我正在尝试在 python 中实现 Donald Knuth 的密码破解算法 只需不超过 5 步 我已经多次检查了我的代码 它似乎遵循算法 如下所示 http en wikipedia org wiki Mastermind board g
  • GroupBy pandas DataFrame 并选择最常见的值

    我有一个包含三个字符串列的数据框 我知道第三列中唯一的一个值对于前两个值的每种组合都有效 为了清理数据 我必须按前两列对数据框进行分组 并为每个组合选择第三列的最常见值 My code import pandas as pd from sc
  • 使用 MySQL 将二进制转换为十进制

    我正在尝试在 MySQL 中构建一个查询 该查询连接一堆二进制字段 然后给出 DECIMAL 形式的结果 e g SELECT CONCAT setting1 setting2 setting3 AS settings 可能给了我 101
  • 为什么 onAppear() 当放置在 swiftUI 中的 NavigationView 内的元素上时会执行两次? (Xcode 12.0)

    FirstView Appeared被打印两次 当视图首次加载时一次 当选择 NavigationLink 时再次一次 import SwiftUI struct FirstView View var body some View Navi
  • Javascript .Replace 替代方案

    我正在为 eBay 编写一个模板 但是 eBay 不允许 replace 下面的代码用于翻转选项卡部分 当用户将鼠标悬停在选项卡 a 上时 相应的 div div a 变得可见 有没有一种解决方法可以让代码在不使用 replace 的情况下
  • 这个 O(N*k) 排序算法是什么?

    当工作 BrainF 最快的排序 我发现了这个算法 它是O N k 其中k是输入中的最大值 它需要 O N 额外的存储空间 物理上的类比是你有 N 堆令牌 栈的高度代表要排序的值 每个标记代表一个位 为另外 N 堆留出空间 您从每个有令牌的
  • 使用 R 从 XTS 对象中提取该月第一个工作日的回报

    我对 R 非常陌生 所以如果我在解释这个问题时出现任何术语错误 我深表歉意 我在 csv 文件中有一组每日退货数据 我已设法将其转换为 xts 对象 数据格式为 HighYield EUR MSCI World EUR 2002 01 31
  • 枚举的 XML 序列化

    我在序列化枚举值时遇到问题 这是代码 System Xml Serialization XmlRootAttribute Namespace IsNullable false public class REQUEST System Xml
  • 将图像存储到数据库 blob;从数据库检索到 Picturebox

    您好 我之前发布了此内容并获得了一些帮助 但仍然没有有效的解决方案 感谢上一个问答 我确定我的 保存到数据库 代码以及 检索到图片 代码有问题 即使我手动将图片保存在数据库中 它仍然无法检索 这是我根据网络上的 3 或 4 个示例拼凑而成的
  • 类型错误:需要一个浮点数

    无法发布图片 所以 a i 1 i 1 sin x ln x i 2 i 1 任务 需要找到a1 a2 an n 是自然的并且是给定的 这就是我尝试这样做的方式 import math a k 0 p 0 def factorial n f
  • 使用 JSON.net 序列化 Dictionary

    我正在尝试使用 JSON net 序列化字典 Using JsonConvert SerializeObject theDict 这是我的结果 1 Blah1 false Blah2 false Blah3 None Blah4 false
  • Python 正确使用 __str__ 和 __repr__

    我当前的项目需要大量使用位字段 我找到了一个简单实用的位字段类的配方但它缺少一些我需要的功能 所以我决定扩展它 我刚刚要实施 str and repr 我想确保我遵守惯例 str 应该是非正式和简洁的 所以我让它返回位字段的十进制值 即st
  • 权限被拒绝:用 Java 创建文件

    使用 Mac 在 Eclipse 中编译以下代码后 import java io public class Filer public static void main String args throws IOException File
  • VB.Net - “With”和闭包不能混用

    只是想我会分享这个以防其他人遇到这个问题 我今天做了类似的事情 我花了一段时间才弄清楚为什么这会在运行时导致问题 这段代码 Public Class foo Public bar As String blah End Class Publi
  • 如何将 Spring WebClient 与 Jetty 一起使用,而不是 Netty?

    根据文档可以将 Spring Reactive WebClient 与 Netty 等不同的服务器一起使用 WebClient 通过 HTTP 客户端库提供更高级别的 API 经过 默认它使用 Reactor Netty 但可以使用不同的插
  • jQuery $.animate() 多个元素但只触发一次回调

    如果您选择一个类或元素集合来使用 jQuery 制作动画 myElems animate 然后还使用回调函数 最终会得到很多不必要的东西animate calls var i 1 myElems animate width 200px 20
  • Android NDK 平台版本相对于 API 级别的确切意义是什么?

    我有一个 Android 应用程序minSdkVersion apiLevel设置为 18targetSdkVersion apiLevel设置为23 因此我设置了NDKplatformVersion to 18 不幸的是 在添加 Open
  • 在 Lua 5.2 中重新创建 setfenv()

    我怎样才能重新创建的功能setfenv在 Lua 5 2 中 我无法准确理解您应该如何使用新功能 ENV环境变量 在 Lua 5 1 中你可以使用setfenv很容易对任何功能进行沙箱处理 Lua 5 1 print G G address
  • ES6 模板文字比字符串连接更快吗?

    在 ES6 中使用字符串连接或模板文字时 HTML 代码生成在现代浏览器中运行速度是否明显更快 例如 字符串连接
  • PHP 代码块之间的变量范围

    我对 PHP 还很陌生 并且继续学习 我经常需要检索某个变量并访问其属性