2012-01-04 2 views
0

Это то, что я есть:Как предотвратить повторение этого кода с помощью ob_get_contents();

ob_start(); 
    for ($i=0; $i<count($_POST['checkbox_checker']);$i++) { 
    echo "<br />".$_POST['checkbox_checker'][$i]; 
    $selection = ob_end_flush(); 
    } 

Я затем с помощью выбора $ хранить в базе данных, так как я не смог найти способ использования сессий для хранения флажков. Проблема в том, что я использую $ SELECTION = ob_end_flush(); значения все еще эхо. Как я могу сделать так, чтобы значения, которые должны быть эхом, сохраняются внутри $ selection и не отображаются пользователю?

+0

Вот что ['ob_end_flush()'] (http://php.net/ob_end_flush). Он очищает собранный результат. Он даже не возвращает буфер. – mario

ответ

3

Фактическое решение, кстати, было бы не использовать echo. Вам не нужно, что обходной путь, если вы просто добавить к переменной строки:

for ($i=0; $i<count($_POST['checkbox_checker']);$i++) { 
    $str .= "<br />".$_POST['checkbox_checker'][$i]; 
} 

+0

Ха-ха '+ 42'^_^duuuh – Neal

+2

Еще один случай, когда OB позволяет людям видеть фактическое решение (ы)! – Paul

2

Применение ob_get_clean();

ob_start(); 
for ($i=0; $i<count($_POST['checkbox_checker']);$i++) { 
    echo "<br />".$_POST['checkbox_checker'][$i]; 
} 
$selection = ob_get_clean(); 
+0

' ob_get_clean' не отключает буферизацию вывода. – Arjan

+0

@Arjan Это имеет и делает для меня. он возвращает строку. – Neal

+0

@Arjan см. Здесь: http://php.net/manual/en/function.ob-get-clean.php «Получает текущее содержимое буфера и ** удаляет текущий выходной буфер **». – Neal

0

ob_end_flush возвращает логическое значение, тогда как ob_get_flush возвращает строку. Последнее - это функция, в которой вы нуждаетесь.

1

ob_end_clean() - Чистый (И вы также можете прочитать на foreach Или даже implode() в этом случае.). (удаление) выходного буфера и отключить буферизацию вывода

, где в качестве

ob_end_flush - Флеш (отправить) выходной буфер и отключить буферизацию вывода

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