2017-01-15 2 views
-1

Как мне известно, если переменные PHP повторяются внутри двойных кавычек, они печатаются на экране.Почему значения элементов массива не печатаются и не генерируют уведомление при двойном кавычке?

Например:

<!DOCTYPE html> 
<html> 
    <body>  
    <?php 
    $jumbo = "JumboJet"; 
    echo "$jumbo"; 
    ?>  
    </body> 
</html> 

Кроме того, я попытался напечатать элементы массива из многомерного массива в двойных кавычках, но вместо того, чтобы печатать элементы массива, что генерирует уведомление, как «Примечание: Массив для преобразования строки в C: \ XAMPP \ HTDOCS \ php_playground \ 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 "<li>".$cars[$row][$col]."</li>"; вместо кода echo "<li>$cars[$row][$col]</li>"; Я получаю желаемый результат без какого-либо уведомления.

Почему это происходит? Почему то же самое, что работает для нормальной переменной, не может работать с элементами массива?

Кто-то может мне помочь в этом отношении?

Нужный выход выше кода, как показано ниже:

enter image description here

+0

добавить фигурные скобки - 'эхо"

  • {автомобили $ [$ строки] [$ Col] }
  • ";' http://php.net/manual/en/language.types.string.php#language.types.string.parsing.c omplex * Просто напишите выражение так же, как оно появится вне строки, а затем оберните его в {и}. * – Sean

    +0

    @Sean: Спасибо за вашу помощь, и это сработало для меня, но не могли бы вы объяснить мне, почему это то же самое вещь, которая работает для нормальной переменной, не может работать с элементами массива? Почему есть необходимость вставить фигурные скобки вокруг? Спасибо, ожидая вашего ответа !!! – user2839497

    +0

    Из http://php.net/manual/en/language.types.string.php#language.types.string.simple -> * Если встречается знак доллара ($), синтаксический анализатор будет с жадностью принимать столько жетонов возможно, чтобы сформировать допустимое имя переменной. *. Поскольку '$ cars' является допустимым именем переменной, синтаксический анализатор останавливается там, но поскольку он является массивом, он дает вам выражение« Уведомление: массив для преобразования строки ... ». Следующая строка состояний -> * Включение имени переменной в фигурные скобки, чтобы явно указать конец имени. * Вот почему для значений массива вам нужно обернуть фигурные скобки, чтобы парсер получал '$ cars [$ row] [$ col] ', а не только' $ cars' – Sean

    ответ

    0

    Вы должны использовать сложный синтаксис, чтобы обойти эту проблему, используя двойные кавычки.

    С помощью этого синтаксиса можно включить любую скалярную переменную, элемент массива или свойство объекта с строковым представлением. Это может быть достигнуто за счет окружающих переменную с фигурными скобками {} следующим образом -

    echo "<li>{$cars[$row][$col]}</li>"; 
    
    -1

    @Hey Все двойные кавычки («») работы данных в качестве постоянной строки, она не может вычисляться выражение, поэтому значение индекс массива не может вычисляться Но {} фигурные скобки вы можете Evalue выражение в двойных кавычках хотел понимать под одной

    <?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 
    
    ?> 
    
    Смежные вопросы