2012-04-16 61 views
0

這會產生什麼結果?關於PHP的客觀問題

ob_flush(); 
session_start(); 
ob_start(); 
echo ('hi'); 
PRINT ' there'; 
ob_end_clean(); 
{ 
     ' Programmer'; 
} 

我正在處理一些PHP問題,我來了這個。什麼可以解決這個問題?任何想法?

+5

你爲什麼不嘗試呢? – Hassan 2012-04-16 05:22:25

+0

我該如何嘗試它,它在一些PHP在線工具中嘗試過,但它不起作用。 – AKIWEB 2012-04-16 05:23:41

+1

您正在面試PHP職位,但沒有辦法玩PHP代碼?你聽說過WAMP嗎? – 2012-04-16 05:32:39

回答

3

它不會打印任何東西。由於輸出緩衝已打開ob_start()ob_end_clean()將「清除(擦除)輸出緩衝區並關閉輸出緩衝」。

而且

{ 
     ' Programmer'; 
} 

會做什麼,但聲明的字符串文字。

1

那麼這裏是我,當我跑它的輸出...

PHP Notice: ob_flush(): failed to flush buffer. No buffer to flush in /Users/foo/source/test.php on line 2 
PHP Stack trace: 
PHP 1. {main}() /Users/foo/source/test.php:0 
PHP 2. ob_flush() /Users/foo/source/test.php:2 

Notice: ob_flush(): failed to flush buffer. No buffer to flush in /Users/foo/source/test.php on line 2 

Call Stack: 
    0.0009  624552 1. {main}() /Users/foo/source/test.php:0 
    0.0027  624600 2. ob_flush() /Users/foo/source/test.php:2 

是,所有的代碼或在那裏它應該如何運行的指令? Jonathon指出這是在命令行上運行的。運行Apache或其他網絡服務器,我希望它不會輸出任何理由的Jonathon在他的答案中提到的。仍然知道CLI的行爲是有用的

+0

注意:這是在CLI下運行的,默認情況下,輸出緩衝沒有啓用:http://www.php.net/manual/en/features.commandline.differences.php – 2012-04-16 05:30:52

+0

@JonathonReinhart是它在CLI下運行並且它看起來輸出緩衝不起作用,或者至少,沒有初始緩衝區。那爲什麼我問是否有關於運行它的特殊說明... – Endophage 2012-04-16 05:31:57

0
  • ob_flush();將無法​​正常工作,沒什麼可沖洗,也許PLAST警告
  • session_start();將無法​​正常工作肯定會PLAST警告,因爲先前的函數調用
  • ob_start();打開輸出緩衝
  • echo ('hi');回波進入輸出緩衝區
  • PRINT ' there';也進入輸出緩衝區
  • ob_end_clean();發送buffe [R內容被遺忘,因爲沒有變量獲得其返回
  • {花括號內的代碼,沒有什麼花哨
  • ' Programmer';不會做任何事。那麼肯定,我可以躲在這裏
  • }我的信用卡號碼爲前

所以,在最好的:沒有輸出。最壞的情況是:屏幕上可能有3-4個警告。取決於display_errors php配置。

+0

最初的ob_flush可能適用於Web服務器腳本。這取決於你的配置。 – Endophage 2012-04-16 05:34:12