Потому что он возвращает истину или ложь.
var_dump(headers_sent());
Должно отображаться (одно или другое ниже)
bool(true)
bool(false)
Работает, просто не будет выводить текст, , если оно ложно , , поскольку это не текст , это значение boolean
.Общее использование этой функции предназначено для оператора if, а не для оператора отображения, если вы хотите отобразить его, просто используйте ternary operator
echo (headers_sent())?'true':'false';
Edit
Спасибо Виктору за поправку: он вернет 1, если истина, пустую строку, если ложь.
Обновление
Почему headers_sent()
возвращает false?Для пояснения я напишу из руководства:
headers_sent - Проверяет, были ли отправлены или куда отправлены заголовки
Обычно, когда у вас есть какие-либо выходные данные, отправляет заголовкиавтоматически в браузер и запускает тело.Например:
<?php
echo "test";
echo headers_sent(); // should yield 1
?>
Это должно отобразить 1, так как у нас был оператор echo для вызова headers_sent
.
<?php
echo headers_sent(); // should yield empty string
?>
Это отобразит пустую строку, учитывая, что до вызова headers_sent () нет вывода.Выше предполагает , что output_buffering выключен.Как и при включенном output_buffering
, он сохраняет весь вывод до завершения обработки сценария, а затем отображает этот вывод, таким образом, тег заголовка / тела отправляется в конце сценария.
Надеемся, что это очищает его.Если нет, см. Ссылку на руководство, которую я разместил выше, и прочитайте примеры в руководстве.