I was wondering why I can\'t do something like {number_format($row[\'my_number\'])}
inside a Heredoc. Is there any way around this without having to resort to defin
You can execute functions in a HEREDOC string by using {$
variable expressions. You however need to define a variable for the function name beforehand:
$number_format = "number_format";
$table .= <<<EOT
<tr>
<td>{$row['my_number']}</td> // WORKS
<td>$myNumber</td> // WORKS
<td>{$number_format($row['my_number'])}</td> // DOES NOT WORK!
</tr>
So this kind of defeats the HEREDOCs purpose of terseness.
For readability it might be even more helpful to define a generic/void function name like $expr = "htmlentities";
for this purpose. Then you can utilize almost any complex expression and all global functions in heredoc or doublequotes:
" <td> {$expr(number_format($num + 7) . ':')} </td> "
And I think {$expr(
is just more obvious to anyone who comes across such a construct. (Otherwise it's just an odd workaround.)