2017-10-26 16 views
1

は、なぜ私はこのためdie()から60の出力を得るのです。このためdie()に渡される整数引数が印刷されないのはなぜですか?

$min = $row['min']; 
die($min); 

でもありませんか? 「必要なスクリプトを終了する前に書き込むためのメッセージやステータス番号を指定し、ステータス番号が出力に書き込まれることはありません。」:

$min = $row['min']*60; 
die($min); 
+0

'$ row ['min']'をint –

+0

にキャストしようとすると、それ以外の何かが間違っていますが、あなたはそれを表示していません。問題を再現できるコード例を提供する必要があります。 – AbraCadaver

+3

'$ row ['min']'は文字列でなければなりません。乗算を実行すると整数に変換され、 'die()'でステータスコードとして扱われます。 "ステータスが整数の場合、その値は終了ステータスとして使用され、印刷されません" –

答えて

2

ソリューション

あなたが値を必要とする場合、それは数だ場合でも、strvalで文字列にそれを解析:

die(strval($min)); 

ドキュメント

dieによると、それはのEquivaです返却するにはを貸してください。 Exit

我々はそれが2人の署名があることがわかります。

void exit (int $status) 

そして

void exit ([ string $status ]) 

を両方とも、以下に説明されています

ステータスが整数がある場合は、その値は終了ステータスとして使用されます ではなくp rinted。終了ステータスは0〜254の範囲で、 終了ステータス255はPHPによって予約されており、使用されないものとします。状態0 は、プログラムを正常終了させるために使用されます。

そして

ステータスが文字列の場合、この関数は単に終了する前の状態を表示します。

(強調鉱山)あなたの質問から最初のコード例では

をエラボレーション


$row['min']が最も可能性が高いだけで文字列(例えばstring(2) "70")です。数値を乗算すると、PHPは値を数値にキャストして乗算することができます。

したがって、最初の例ではを終了する直前に出力するexit ([ string $status ])関数を呼び出しています。 2番目の例では、exit (int $status)関数を呼び出していますが、は終了ステータスとして使用され、印刷されません。

自分で見たい場合は、var_dumpを使用して変数の種類を確認してください。 Check an Example

2

それはあなたの文字列を渡す必要があるためであります 倍した後、値はint型にキャストされます。したがってdieはそれを出力しません。

1

die()の機能は、exit()の別名です。

PHPのマニュアルには、exit()polymorphicと記載されています。つまり、唯一の引数として文字列または整数の両方を受け入れることができます。

文字列を指定すると、スクリプトが終了する前に文字列が出力されます。

0-254の間の)整数を指定すると、スクリプトのexit status codeとして使用され、何も印刷されません。 0のコードはスクリプトの正常終了を示し、それ以外はエラーです。コード255はPHPによって予約されています。

あなたのニーズに合った正しいデータ型を確実に渡すために、strval()またはintval()を使用できます。

関連する問題