2013-05-23 1 views
6

コマンドechoは何も返しません。しかし、プリントは1を返します。 これを返す1の実際の使用は何ですか?確かに式で使うことができますが、は常に真である場合には役に立たない表現ではありませんそしてより多くのコードが使用されますか?print()は常に1を返しますが、実用的ですか?

<?php 
unset($empty); 
if(print ($empty)){ 
    echo "Yep sure thing. Print strikes again with a ", "1."; 
} 
?> 

いつも次の結果と同じ結果を返してはいけませんか?

<?php 
print ($empty); 
echo "Yep sure thing. Print strikes again with a ", "1."; 
?> 

この質問は1を返し、ないなど

答えて

3

printは常に現実の世界では1を返します。インセプションを実行しようとしている場合、常にゼロを返すprint関数を考案できます。そうすれば、あなたは夢や現実の世界にいるかどうかを確認することができます。

ただし、printの戻り値の使用方法は、単にtrueを使用するのと同じです。無限ループ、印刷デバッグ情報などはすべて非常に魅力的な用途ですが、のデザインが悪い(狂気に照らされて)避けてください。

+0

haha​​私は、この回答が最初のプログラムをどのようにプログラムするかについてのアドバイスに投票したかどうかわかりません。または、機能の実用的なものは、まったく良いアイデアではありません!まだ1 + – MadDokMike

+0

両方のビットかもしれません;) – ose

2

結果は常にtruthyあるので、あなたができるチェーン「エコーは、印刷にはない一方で、カンマで区切られた複数の文字列をエコーできる」そのことについてですこれは次のような表現でまとめられます:

if (print('debug stuff') && $a == 1) { 
    // do stuff 
} elseif (print('debug another') && $a > 56) { 
    // do stuff 
} 

条件が評価されると、結果に影響を与えないデバッグのように機能します。

無限ループで使用

または、:

while(print('still in the loop')) { 
    // do something very exciting 
} 

これらはあなたがechoで行うことができなかったいくつかのもの(それはパースエラーが発生します)ですが、それの有用性は、基本的に限定されていますオペレーショナルステージではなく、テストとデバッグのステージです。

+2

ありがとう...本当に明白です。ループ変数をいくつか出力することさえできます。 – BlitZ

0
**echo** 

No return value 
Outputs one or more strings separated by commas 

    e.g. echo "String 1", "String 2" 

**print** 

Returns 1, so it can be used in an expression 
Outputs only a single string 

if((print "foo")& &(print "bar"))

1

私は有用な表現を見ることができません。ループ短いプリンタについて

:しかし、私はいくつかの奇妙なを作成することができ

for($i=0; $i<100; $i+=print($i.')<br/>')) ; 

ループプリントカウンター中:

//$result is some db result 
$rowCounter = 0; 
while($row = $result->fetchAssoc()) { 
    $rowCounter += print($row['column']); 
} 
+0

クール、私は例が好きです。特にforループ。通常、私は2行で1つを行います。同じ結果を他のコードで使用するのが賢明かどうか、それが賢明かどうかは疑問です。 –

関連する問題