在PHP中,如何在echo语句中选择数组中的项?

在PHP中,如何在echo语句中选择数组中的项?,php,Php,我有一个PHP语句,如下所示: foreach ($books as $book) { if ($book['categoryId'] == $selectedCategory) { echo "<div class=\"flexItem\"> <img src=\"images/books/$book['image']\"alt=\"Royal Easter\&quo

我有一个PHP语句,如下所示:

foreach ($books as $book) {
    if ($book['categoryId'] == $selectedCategory) {
       echo "<div class=\"flexItem\"> 
             <img src=\"images/books/$book['image']\"alt=\"Royal Easter\" class=\"image\">";
}

我在$book['image'下面有一条红线。我试图修复PHPstorm推荐的解决方案,但我想知道编写这种echo语句的正确方法???

您提供的代码缺少结束括号}&结束标记,请尝试一下:

foreach ($books as $book) {
   if ($book['categoryId'] == $selectedCategory) {
        echo '<div class="flexItem"> 
                <img src="images/books/'.$book['image'].'" alt="Royal Easter" class="image">
              </div>';
   }
}
技巧1:当您访问包含在双引号中的字符串中的数组键时,不要在键中使用“单引号”

所以$book['image']应该仅为$book[image]

提示2:您还可以使用{$book['image']},使用大括号{将其括起来


@Meta已经提到了其他替代方案。

非常基于观点,但我会使用单引号并连接字符串,例如echo。这样你就不需要逃避你可以使用sprintf echo sprintf,$book['image'];或括号echo;没有正确的方法将变量字符串数据插入到另一个字符串中,PHP提供了多种方便的方法。在这种情况下,您需要大括号…{$book['image']}…因为它不是一个简单的表达式,但是连接和标记化sprintf也是完全可行的。因为您正在访问双引号内的变量来连接字符串,所以在这个变量周围使用大括号会更清楚