Php 为什么数组元素的值在放入双引号时没有打印出来并生成通知?
据我所知,若PHP变量在双引号内回响,它们就会被打印在屏幕上 例如:Php 为什么数组元素的值在放入双引号时没有打印出来并生成通知?,php,arrays,multidimensional-array,echo,notice,Php,Arrays,Multidimensional Array,Echo,Notice,据我所知,若PHP变量在双引号内回响,它们就会被打印在屏幕上 例如: <!DOCTYPE html> <html> <body> <?php $jumbo = "JumboJet"; echo "$jumbo"; ?> </body> </html> 类似地,我尝试在双引号内打印多维数组的数组元素,但没有将生成通知的数组元素打印为“注意:在C:\xampp\htdocs
<!DOCTYPE html>
<html>
<body>
<?php
$jumbo = "JumboJet";
echo "$jumbo";
?>
</body>
</html>
类似地,我尝试在双引号内打印多维数组的数组元素,但没有将生成通知的数组元素打印为“注意:在C:\xampp\htdocs\php\u playway\demo.php第17行中的数组到字符串转换”,代码如下:
<!DOCTYPE html>
<html>
<body>
<?php
$cars = array(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>$cars[$row][$col]</li>";
}
echo "</ul>";
}
?>
</body>
</html>
而如果我尝试使用代码echo“”$cars[$row][$col]。“ ”代码>而不是代码echo“$cars[$row][$col] ”代码>我在没有任何通知的情况下获得所需的输出
为什么会这样?为什么同样适用于普通变量的方法不能适用于数组元素
有人能在这方面帮助我吗
上述代码的预期输出如下:
您必须使用复杂的语法,才能使用双引号解决此问题。
任何标量变量、数组元素或具有字符串表示的对象属性都可以通过此语法包含在内。
这可以通过在变量周围使用大括号{}
实现,如下所示-
echo "<li>{$cars[$row][$col]}</li>";
echo“{$cars[$row][$col]} ”;
@嘿,所有双引号(“”)数据都作为常量字符串工作,它无法计算表达式,这就是数组索引值无法计算的原因
但是通过{}大括号,你可以用双引号计算表达式的值,就像下面的一样
<?php
$arr = array(array("name" => "user2839497"));
//echo "$arr[0]['name']"; // this is not the right way it will generate an error like array to string conversion
echo "{$arr[0]['name']}"; // by using {}braces you can resolve your problem
?>
添加花括号-echo“{$cars[$row][$col]} ”代码>只需按照在字符串外显示的方式编写表达式,然后用{和}将其包装。@Sean:谢谢您的帮助,它对我很有效,但请您解释一下,为什么对普通变量有效的方法对数组元素无效?为什么有必要戴上花括号?谢谢,等待你的回复!!!From->如果遇到美元符号($),解析器将贪婪地获取尽可能多的令牌以形成有效的变量名。。由于$cars
是一个有效的变量名,解析器就停在那里,但由于它是一个数组,它会给您提示:数组到字符串的转换…
。下一行状态->用大括号括起变量名,以明确指定名称的结尾。这就是为什么对于数组值,您需要用大括号括起来,以便解析器得到$cars[$row][$col]
,而不仅仅是$cars