Как изменить переменную echo'd, уже вызванную в PHP? - PullRequest
0 голосов
/ 03 января 2012

В следующем коде есть ли способ изменить содержимое переменной после ее вызова? В этом действительно простом (и бессмысленном) примере, когда вызывается $ foo, я хочу, чтобы он отображал 'baryay', а не 'bar' БЕЗ необходимости вызывать changefoo () перед рукой. changefoo должен быть вызван после.

<?php

changefoo(){
   global $foo,
   $foo .= 'yay';
}

$foo = 'bar';
echo $foo;

changefoo();


?>

В ожидании преследования и предложений по общему методу кодирования.

Ответы [ 4 ]

3 голосов
/ 03 января 2012

Нет.После того, как вы записали что-то в вывод, вы вряд ли сможете вернуться и изменить это.Вы должны реструктурировать свой поток, чтобы он соответствовал вашим потребностям.

Думайте об этом как о реальном принтере.Если вы что-то печатаете на листе бумаги, даже если страница еще не распечатана, вы не сможете вернуться и изменить то, что напечатали.

2 голосов
/ 03 января 2012

Нет, как только это отражено, вы не можете изменить то, что отображается на экране, без использования javascript / jquery.Если вы хотите, чтобы он повторял "baryay", вам нужно написать:

echo $foo."yay";

2 голосов
/ 03 января 2012

I не считаю, что это возможно.


Также попробуйте не , чтобы использовать global с.просто передайте переменную в:

function changefoo(&$foo){
   $foo .= 'yay';
}

$foo = 'bar';

changefoo($foo);

echo $foo; //baryay
1 голос
/ 03 января 2012

Если это результат оператора echo, он больше не является переменной. Вы можете изменить вывод своих скриптов с помощью обычных функций буферизации вывода, независимо от того, откуда они берутся:

<?php

function changefoo(){
   global $foo;
   $foo = 'blah';
}

ob_start();
$foo = 'bar';
echo $foo;

changefoo();
ob_end_clean();
echo $foo;

?>
...