Я хочу объединить один элемент многомерного массива с некоторыми строками.
<? $string1 = 'dog'; $string2 = array ( 'farm' => array('big'=>'cow', 'small'=>'duck'), 'jungle' => array('big'=>'bear', 'small'=>'fox') ); $string3 = 'cat'; $type = 'farm'; $size = 'big'; $string = "$string1 $string2[$type][$size] $string3"; echo($string); ?>
Используя этот синтаксис для $ string, я получаю:
собака Array [большая] кошка
Я бы не хотел использовать альтернативный синтаксис
$string = $string1 . ' ' . $string2[$type][$size] . ' ' . $string3;
который работает.
Что случилось с "$ string1 $ string2 [$ type] [$ size] $ string3"?
Используйте «сложный синтаксис»:
$string = "$string1 {$string2[$type][$size]} $string3";
Разбор переменных PHP довольно прост. Он будет распознавать доступ к массиву одного уровня, но не более уровня. Включив выражение в {}
вы явно указываете, какая часть строки является переменной.
См. PHP – Variable parsing .
Я не поклонник сложного синтаксиса или разбора переменных в строках. Обычно я использую синтаксис «alternate», который вы описали. Вы тоже можете это сделать:
$string = implode(' ', array($string1, $string2[$type][$size], $string3));
Использовать это:
$string = "$string1 {$string2[$type][$size]} $string3";