Поскольку heredoc похож на любую другую строку, его значение фиксируется при его объявлении. Если переменные $mov_id
и $mov_name
не были установлены при объявлении $ta_row
, их нельзя использовать в $ta_row
.
Если вы хотите сделать что-то, что вы пытались сделать в первую очередь, вам придется использовать что-то вроде str_replace()
или sprintf()
- заменить заполнители в исходной строке с фактическими значениями, которые вы хотите отобразить.
Учтите это:
$myVar = "Some string containing a $var";
$var = 'Variable';
echo $myVar;
// Outputs: Some string containing a
Теперь вот это:
$var = 'Variable';
$myVar = "Some string containing a $var";
echo $myVar;
// Outputs: Some string containing a Variable
... Heredocs ведут себя точно как строка в двойных кавычках (по крайней мере, с этой точки зрения).
В качестве альтернативы вы можете сделать это:
$myVar = 'Some string containing a $var';
$var = 'Variable';
echo $myVar;
// Outputs: Some string containing a $var
echo str_replace('$var',$var,$myVar);
// Outputs: Some string containing a Variable
... потому что $myVar
теперь в одиночных кавычках, $var
появляется в нем буквально. Затем, когда вы запускаете str_replace()
, оно заменяется значением $var
вместо литеральной строки.
Вероятно, стоит перечитать это .