Sicuramente si può risolvere, ma la tua richiesta è ambigua. Bisognerebbe capire perché vorresti poter assegnare un codice php ad una variabile, e se realmente ti serve farlo.
Certamente puoi farlo con l'uso di
eval() (che in genere è altamente sconsigliato), come ti è stato chiaramente indicato.
In alternativa, a seconda delle tue reali esigenze, potresti risolvere in altri differenti modi.
In sostanza, prendendo il tuo esempio, se ti serve stampare il valore di
$y solo quando
$x è
true, puoi usare direttamente quel codice senza doverlo associare ad una variabile:
PHP:
$x = true;
$y = 2;
if($x) { echo $y; };
Oppure se proprio vuoi attribuire il valore alla variabile
$a solo a quella condizione, puoi farlo in questo modo:
PHP:
$x = true;
$y = 2;
if($x) $a = $y;
echo $a;
In questo caso però, se la condizione non viene verificata, tale variabile risulta non definita e potrebbe generare degli errori, che possono risolversi comunque in vari modi.
Inizializzando la variabile prima:
PHP:
$x = true;
$y = 2;
$a = "";
if($x) $a = $y;
echo $a;
Usando l'
operatore @ per il controllo dell'errore (sconsigliato):
PHP:
$x = true;
$y = 2;
if($x) $a = $y;
echo @$a;
Usando
else per assegnare un valore alternativo:
PHP:
$x = true;
$y = 2;
if($x) $a = $y;
else $a = "";
echo $a;
O analogamente, usando l'operatore ternario:
PHP:
$x = true;
$y = 2;
$a = $x ? $y : "";
echo $a;
Se invece ti serve creare un blocco di codice da poter eseguire dove e quando vuoi sul tuo codice, puoi creare una funzione da poter richiamare successivamente, come consigliato da RecallingTea31.
In questo caso puoi decidere che la funzione restituisca direttamente il valore:
PHP:
$x = true;
$y = 2;
$a = function(){
global $x,$y;
return $x ? $y : "";
};
echo $a();
O così:
PHP:
$x = true;
$y = 2;
function a(){
global $x,$y;
return $x ? $y : "";
};
echo a();
Se vuoi invece che la funzione stessa stampi il risultato, puoi inserire l'
echo dentro la funzione:
PHP:
$x = true;
$y = 2;
function a(){
global $x,$y;
if ($x) echo $y;
};
a();