2013-06-12 1 views
0

Как загрузить результаты цикла в буфер с помощью функций управления выходом PHP без отражения результатов в браузере? В сущности, то, что я пытаюсь сделать, это вызвать результаты из буфера, а не повторять мой путь через цикл «как он». Можно ли сделать это? Любая помощь оценивается. Благодаря!Загрузка результатов в буфер без эха в браузере

+2

Почему бы не сохранить вывод переменной и просто повторить переменную, когда будете готовы? – phpisuber01

+0

«Вызов результатов из буфера»? Что это значит? – Jon

+0

@phpisuber: Я выполняю итерацию по всему массиву любой конкретной длины, а выход основан на состоянии. Было бы невозможно отслеживать все переменные. Мой код будет беспорядок. Я ищу простой способ справиться с этим. – shmuli

ответ

1

Используйте ob_get_contents, чтобы получить содержимое буфера без отправки.

Чтобы очистить буфер вызова ob_end_clean

Чтобы сделать оба в одном шаге вызова ob_get_clean

Примером может быть

ob_start(); 
foreach ($results as $result){ 
    include("tmplate/to/render/a/result.php"); 
} 
$resultHTML = ob_get_clean(); 

Тогда позже.

<div class='left-rail'><?= $resultHtml ?></div> 
+0

Быть первым, кто ответит, это хорошо. Быть первым, кто дал * значимый ответ, намного лучше. – Jon

+0

@Jon, что вы имеете в виду ... – Orangepill

+0

@Orangepill: Джон указывает, что он не затрагивает вопрос. – shmuli

1

Это все еще не ясно, что вы имеете в виду, но вот ответ, основанный на прошлом опыте PHP программистов: PHP является полным языком программирования, так что вы можете создавать сложные структуры данных, не производя никаких выходных данных. Если вы читаете строки из базы данных, вы можете прочитать их в массиве, делать все, что хотите, с массивом, а затем производить вывод, когда будете готовы.

Если вы генерируете выходные данные путем многократного сканирования массива, вы можете постепенно наращивать строку (или больше, если это необходимо в вашем случае) и снова выводить их, когда вы знаете, что хотите сделать ,

Что-то вдоль этих линий:

$output = ""; 
foreach ($my_array as $row) { 
    $output .= "<li>".$row."</li>\n"; 
    // plus various checks etc. 
} 

Я получаю идею о том, что вы после этого?

+0

Спасибо! Это то, что рекомендовал phpisuber01 в приведенных выше комментариях. Я сделаю это; он должен делать именно то, что я пытаюсь понять. – shmuli

Смежные вопросы