2010-06-10 6 views

Répondre

2

Non. L'interpolation de chaîne PHP n'est malheureusement pas très robuste. Vous devrez soit concaténer deux chaînes, soit assigner ce petit peu de logique à une autre variable à l'avance.

<?php 
$a = true; 
$b = $a ? 1 : 2; 
$str = <<<EOF 
Hello, world! The number of the day is: $b 
EOF; 
echo $str; 
2

Je dirais que non.

Voir cette question connexe pourquoi vous ne pouvez pas faire des appels de fonctions et solutions de contournement possibles: Calling PHP functions within HEREDOC strings

Le point crucial de c'est que vous devrez probablement affecter votre opérateur ternaire à une variable avant la heredoc.

2

Vous pouvez faire quelque chose comme ceci:

$values = array('1', '2'); 

$str = <<<EOF 
{$values[$a]} 
EOF; 
1

FWIW vous pouvez utiliser heredocs que soit la moitié d'un ternaire. Comme le :/autre cas,

$optional_input = empty($name) ? "" : <<<INPUT 
<input type="hidden" name="name" value="$name" /> 
INPUT; 

et si vous ne me dérange pas la syntaxe d'avant-garde, comme ?/si le cas:

$optional_input = isset($name) ? <<<INPUT 
<input type="hidden" name="name" value="$name" /> 
INPUT 
           : ""; 

Pour le ?/si le cas, delimiter de fermeture de la heredoc (INPUT) est-ce que doit être sur sa propre ligne; l'indentation : est pour plus de clarté.