PHP 字符串插值语法

2023-12-14

我尝试使用以下语法进行重定向:

header("location: readMore.php?id=$post['post_id']");

但这没有用。只有在有人建议用大括号括起来之后它才起作用$post['post_id']!

正确的语法是:

header("location: readMore.php?id={$post['post_id']}");

在这种情况下,大括号有什么作用?


Quoting 手册:

When a string用双引号或heredoc指定,变量都在其中解析。

有两种类型的语法:simple一和一complex一。简单的语法是最常见和方便的。它提供了一种嵌入变量的方法,array值,或object财产在一个string以最小的努力。

复杂的语法可以通过表达式周围的花括号来识别。

您的第一个代码使用简单的语法,第二个代码使用复杂的语法。

手册没有明确说明这一点,只是简单语法中的空格似乎是一个错误,使您的第一个代码无效。复杂的语法appears据我所知,支持与常规 PHP 相同的语法,但这似乎并没有在任何地方得到实际保证。

一般来说,字符串插值是相当笨拙的:

$a = [['derp']];
$b = $a[0];

// Works. It prints derp
echo "$b[0]";

// Doesn't work. It throws an error
echo "$b[ 0 ]";

// Works. It prints derp
echo "{$b[ 0 ]}";

// Doesn't work. It prints Array[0]
echo "$a[0][0]";

// Works. It prints derp
echo "{$a[0][0]}";

// Doesn't work. It prints { Array[0] }
echo "{ $a[0][0] }";

你会遇到类似的问题$object -> foo and $object->foo->bar.

对我来说,这纯粹是疯狂。因此,我尽可能避免使用双引号字符串(我使用它们的唯一目的是转义序列,例如"\n")。我改为使用单引号和字符串连接,如下所示:

header( 'location: readMore.php?id=' . $post[ 'post_id' ] );

这可以让你使用actualPHP 变量语法没有字符串插值这个可怕的死亡陷阱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 字符串插值语法 的相关文章

随机推荐

  • 使用 Web 插件时,UFT 如何执行 Click 方法?

    我正在使用 UFT 11 50 在 Internet Explorer 8 0 上测试高度基于 javascript 的应用程序 我想知道使用 Web Add In 时 UFT 如何在后台实现 Click 方法 UFT 是否发送 Windo
  • 如何在 Angular $http 服务中确定请求的优先级?

    我正在开发一个具有大量延迟数据加载的应用程序 我想根据 优先级 参数对 http 请求进行优先级排序 这就是使用它的概念 http get url params query priority 1 我正在考虑使用 http 拦截器 像这样的东
  • Java 和 SQLite [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我被单个文件数据库提供的整洁所吸引 有哪些驱动程序 连接器库可以通过 Java 连接和使用 SQLite 我发现了一个包装库 http www ch werner de javasq
  • 结合 Jackson @JsonView 和 @JsonProperty

    有没有一种方法不仅可以通过在 JsonView 中使用不同的类来查看 隐藏字段 还可以根据分别用于每个字段的视图定义不同的名称 如 JsonProperty 问候并谢谢 蒂姆 我的解决方案包括杰克逊 米辛特征 我使用相同的视图类来放置不同的
  • 当 foo 由类 ArrayList 而不是接口 List 表示时,使用它不是更容易吗?

    我经常看到这种语法 但不明白其背后的推理 我认为您通常希望使用类而不是接口 以便更轻松地执行您可能想要执行的全部操作 为什么要这样做 List
  • 标签框中的换行符

    我怎样才能换行label box使用 C 这是我的代码 用于在标签框中显示数据库中的值 protected List
  • 将 ArrayList 参数传递给控制器​​操作 ASP.NET MVC

    我正在编写一个应用程序 其中我需要将 System Collections ArrayList 数据作为参数从一个控制器操作发送到另一个控制器操作 我在用 return RedirectToAction action1 controller
  • 我什么时候应该打电话给super?

    最好用什么 super any method name 最近我发现在 dealloc 中 super dealloc 必须站在同一立场上 因为如果我们在之后设置它 之前没有使用过的任何变量都可能被垃圾填充 super dealloc 这是一
  • 用于计算英国邮政编码之间距离的库

    我正在寻找一种方法来计算两个英国邮政编码之间的近似距离 直线距离足够好 以分析数据 最好可以通过 java 轻松访问 但 C 本机 C 等也可以 首先 您需要将邮政编码转换为有用的坐标 例如 邮政编码查找表中的东距和北距值 如下所示 htt
  • R 中一百万个观测值的 Kmeans - 绘制集群时遇到的问题

    我正在尝试对超过 100 万行执行 KMeans 聚类 其中有 4 个观察值 全部为数字 我正在使用以下代码 kmeansdf lt as data frame rbind train V3 train V5 train V8 train
  • 如何使用 AngularJS 在点击时对列进行反向排序

    我有一个简单的方法来对表列进行排序 但我无法找到一种方法来在单击和返回时反向排序之间进行交替 有人对这个问题有任何解决方案吗 下面是一个小提琴 向您展示我的意思 div div p orderProperty p div class col
  • iPhone应用程序全屏发送电子邮件

    我正在开发一个 iPhone 应用程序 用于使用内置图形和用户定义的文本创建图像 我希望能够拥有带有内置图形和用户定义文本的应用程序 然后可以将其作为单个图像 很像屏幕截图 发送到电子邮件应用程序以通过电子邮件发送 有没有一种方法可以做到这
  • 如何检查应用程序是否可移动到 SD

    我想知道如何通过代码检查应用程序是否可以移动到SD 我知道如何获取已安装的应用程序列表以及它是否在 SD 卡上 如果 ApplicationInfo 标志包含 ApplicationInfo FLAG EXTERNAL STORAGE 那么
  • System.IO.IOException:“该进程无法访问该文件,因为该文件正在被另一个进程使用”

    我正在尝试保存我的 txt 文件 但是当我这样做时 标题中出现错误 如果我使用 CreateNew 我不会收到错误 但我想保存到现有文件中 private void OpenFile MouseDown object sender Mous
  • 唤醒锁不工作

    我设置了唤醒锁 这样当屏幕超时或按下屏幕锁定按钮时我仍然可以听到声音 据我通过在线阅读了解到的是 我只需要部分唤醒锁 这是代码 但它不起作用 没有 logcat 错误 package com androidsleepmachine gamb
  • 在 Go 中创建空闲超时?

    我将 CloudFlare 用于我的一个大容量网站 它位于我的堆栈前面 问题是 CloudFlare 除了创建新连接之外 还使空闲连接保持打开状态 这不是我可以更改的设置 当我让 Varnish 或 Nginx 坐在前面侦听端口 80 时
  • 如何在不运行 Bash 脚本的情况下对其进行语法检查?

    是否可以在不执行 bash 脚本的情况下检查它的语法 使用 Perl 我可以运行perl c script name bash 脚本有等效的命令吗 bash n scriptname 也许有一个明显的警告 这会验证语法 但不会检查您的 ba
  • Android中的App如何以全屏模式运行

    当我将它运行到选项卡中时 我创建了一个应用程序 然后它不会全屏显示 我还完成了它的属性 全屏无标题栏 所以它没有标题 thanks 你可以加android theme android style Theme NoTitleBar Fulls
  • LineChart FX - 删除实线

    我有一个关于图表 LineChart JavaFX 的好奇问题 I have this graph dots forming a jump on the X axis as shown by the two red points I sco
  • PHP 字符串插值语法

    我尝试使用以下语法进行重定向 header location readMore php id post post id 但这没有用 只有在有人建议用大括号括起来之后它才起作用 post post id 正确的语法是 header locat