2012-04-16 1 views
0

これに対する出力は何ですか?PHPに関する客観的な質問

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

私はいくつかのPHPに関する質問に取り組んでいました。この疑問に対する解決策は何でしょうか?何か案が?

+5

あなたはそれを試してみませんか? – Hassan

+0

どうすれば試してみることができますが、PHPのオンラインツールで試してみましたが、うまくいきませんでした。 – AKIWEB

+1

あなたはPHPのポジションについてインタビューしていますが、PHPコードで遊ぶ方法はありませんか?あなたはWAMPについて聞いたことがありますか? –

答えて

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や他のWebサーバーを経由して実行すると、彼の答えに挙げられたReason's Jonathonのために何も出力しないと思います。 CLIを使用して動作を知っておくと便利です。

+0

注:これはCLIの下で実行され、出力バッファリングはデフォルトでは有効になっていません。http://www.php.net/manual/en/features.commandline.differences.php –

+0

@JonathonReinhartはい、CLIで実行されました。出力バッファリングが機能しないか、少なくとも初期バッファは存在しないようです。なぜそれを実行するための特定の指示があるかどうか尋ねられた理由は... – Endophage

0
  • ob_flush();、フラッシュする何も、多分プラスト警告を動作しませんしません
  • session_start();が動作しなくなりますので、
  • ob_start();は、出力バッファリング
  • echo ('hi');エコーをオンに前回の関数呼び出しの間違いプラスト警告出力バッファーに
  • PRINT ' there';出力バッファーにも
  • ob_end_clean();送信バッファーR内容忘却の彼方への変数がそのリターン
  • {カーリーコードブラケットを取得していないので、
  • ' Programmer';
  • 変わったことはし何もしないではないだろう。何も出力:私は最高の状態で、だから、前

として、ここで

  • }私のクレジットカード番号を隠すことができなかったように確認してください。最悪の場合:画面上で3〜4回の警告が表示されることがあります。 〜によってdisplay_errors phpの設定。

  • +0

    最初のob_flushは、Webサーバースクリプトでうまく動作するかもしれません。あなたの設定によって異なります。 – Endophage