2014-05-08 3 views
0

В PHP вы можете встроить массив непосредственно в строку с двумя кавычками, но он выглядит как есть два способа сделать это; например:

$arr[0]="foobar"; 
echo "${arr[0]}"; 
echo "{$arr[0]}"; 

Они оба работают, но в чем разница? Или лучше?

(Это удручающе трудно смотреть это вверх из-за отсутствия Google, поддержки специальных символов, но я видел оба формата в использовании.)

+0

@Sean Синтаксис переменных переменных будет '' $ {$ arr [0]} "'. Обратите внимание на дополнительный '$'. – Barmar

ответ

0

Оба работают, потому что оба являются действительными. От the manual:

комплекс (фигурный) Синтаксис

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

В этом синтаксисе может быть включена любая скалярная переменная, элемент массива или свойство объекта с строкой . Просто напишите выражение так же, как оно появится за пределами строки, и , затем заверните его в {и}. Поскольку {не может быть экранирован, этот синтаксис будет быть распознан только тогда, когда $ немедленно следует за {. Используйте {\ $ to получите литерал {$.

// Won't work, outputs: This is { fantastic} 
echo "This is { $great}"; 

// Works, outputs: This is fantastic 
echo "This is {$great}"; 
echo "This is ${great}"; 

// Works 
echo "This square is {$square->width}00 centimeters broad."; 


// Works, quoted keys only work using the curly brace syntax 
echo "This works: {$arr['key']}"; 
2

Согласно PHP documentation on Strings, как "${arr[0]}" и "{$arr[0]}" показаны как действительные примеры. Однако после этого используется только синтаксис "{$arr[0]}". Итак, вы бы предположили, что это «предпочтительный» синтаксис.

+0

Сторона примечания: это называется сложным синтаксическим строком (фигурный синтаксис). – Sam

1

Ни один из них не является «лучшим». Это то же самое, что выражается в небольшом различном синтаксисе. Проверьте страницу руководства о разборе строк: http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing. Это очень хорошая страница документации, нечего сказать.

Смежные вопросы