echo -> return

Foshvad

Guest
echo -> return

Есть функция, которая что-то echo; Во что ее надо заключить, чтоб в результате получился return?

PHP:
function ech()	{
echo “123”;
}

echo “4444 ”.ech().” 5555”;
очень бы хотелось в результате увидеть “4444 123 5555”


Думал получится
PHP:
echo “4444 ”. ob_start().ech().ob_get_contents().ob_end_clean().” 5555”;
но ob_start() возвращает ‘1’; Которая вылазит совершенно не в тему в самом начале.
 

Demiurg

Guest
PHP:
ob_start();
ech();
$Var = "4444 ".ob_get_contents().” 5555”;
ob_end_clean();
echo $Var;
 

f1

formula 1
echo “4444 ”;
ech();
echo 5555”;

или в функции сделать return “123”;
 

Foshvad

Guest
Спасибо, конечно, но это все понятно. Но конструкция именно “4444 ”.[[ech()]].” 5555”;

Перед парсингом [[ и ]] можно на что-то заменить.
На что?
 

Foshvad

Guest
:) Ну функцию ech() меня нужна. Он в другом месте используется и сама по себе должна именно echo делать
Неужели нет никаких варинатов?
 

Foshvad

Guest
Можно, но для этого надо Уж ОЧЕНЬ много менять и перепроверять.

Да, и ech в других местах рекурсивная, то есть она echo пока что-то не произойжет. Не заставишь ведь ее return несколько раз...
 

RomikChef

Guest
function ech($return=0) {
if (!$return) echo “123”;
else return 123;
}
 

Foshvad

Guest
2RomikChef: функция ech куда сложнее чем просто echo и очень бы не хотелось ее трогать
 

Demiurg

Guest
2 Foshvad тебе предложили кучу вариантов. что ты еще хочешь ? что бы ничего не исправлять и все заработало ?
 

RomikChef

Guest
Ну, раз не хочешь трогать и переделать в ОДНОМ месте - чего ж ты нам-то голову морочишь?
Возьми, да переделай по-человечески.
Я тебе показал, как твою кривизну исправить быстро и в одном месте. Не нравится - исправляй везде так, чтобы еч твоя только возвращала значение.
 

Foshvad

Guest
Функция ech гораздо сложнее, чем просто echo "123";
function ech ()
 

tony2001

TeaM PHPClub
Foshvad:
тебе Ромик предложил самый нормальный вариант - подправить саму функцию и только В ОДНОМ месте указать $return = true;
ВСЕ! больше ничего делать не надо!
 

Foshvad

Guest
Функция ech гораздо сложнее, чем просто echo "123";
PHP:
function ech ($id) {
.....
.....
.....
echo $something;
if ($id<10) {ech($id++);}
}
}

то есть она echo в процессе работы. Если бы echo происходило только один раз - согласен это можно было бы изменить, а так return ведь можно сделать только единожды
 

tony2001

TeaM PHPClub
блин....
объясняю элементарные вещи:
PHP:
function ech () {
....
$return ? $return_value.=$something : print $something;
.....
if ($return) return $return_value;
}
 

RomikChef

Guest
мля, о чем мы тут вообще говорим?
Чем тебя не устраивает,
function ech() {
echo “123”;
}
echo “4444 ”.ech().” 5555”;
????????????????????????????????

ПЕРЕДЕЛАЙ свою функцию, чтобы она не в сотне мест делала эхо, а в сотне мест набирала переменную.
а в самом конце простая проверка, как я указал.
И хоть она на пять сотен строк - эта функция - делов тут на 10 минут. Хотя все это все равно туфта. потому, что все работает и так.
 

tony2001

TeaM PHPClub
Romik:
я подумал, что небольшая цензура не помешает.
надеюсь, что суть постинга сохранилась =)
 
Сверху