Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么数组元素的值在放入双引号时没有打印出来并生成通知?_Php_Arrays_Multidimensional Array_Echo_Notice - Fatal编程技术网

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

据我所知,若PHP变量在双引号内回响,它们就会被打印在屏幕上

例如:

<!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