プロが教えるわが家の防犯対策術!

<?php
// stringcast.php
if (!isset($argv[1])) {
exit;
}
$num = $argv[1];
if ($num == 100) {  ←(1)
echo "num is 100", PHP_EOL;
} else {
echo "num is not 100",PHP_EOL;
}

このプログラムを
%php stringcast.php100
のように実行する、引数の100はPHP文字列型として渡されます。
 したがって、(1)の比較では、文字列"100"の入って変数$numと、整数100が比較されるため、
文字列"100"は整列100へとキャストされまた後、比較演算が実行されます。
 今回は、動作の結果に違いはありませんが、ここで整数同士を比較しているつもりでも実際には
文字列を整数の比較が行われ、キャストが発生している、という挙動を把握しているか、していない
かではなく大きな違いがあります。引数とし期待している値の型が決まっている場合、明示的にキャ
ストを行い、厳密な比較演算子(===など)を用いるほうが安全です。
--------------------------------------------------------
以上、参考書をまるごと入力しました。
 そこで $num = $argv[1];で!$argv[1]とはこのプログラムではどんな働きがあるのでしょうか!?
 ($argv[1];を$numに代入だと思います。間違っていたなら御免なさい。)
 宜しくお願いします。
 なお・批判的なご回答はお控えくださいませ。


 

A 回答 (2件)

if ($argv[1] == 100)



と書くと複雑で勘違いしやすいと思ったから、その前に代入文を入れただけではないでしょうか?

プログラムの先頭で、引数 argv[] からそれぞれのパラメターの変数に代入し値チェックすることは、ごく標準的な作法です。
    • good
    • 0
この回答へのお礼

 A:ごく標準的な作法
ありがとうございます。
参考になります。

お礼日時:2014/03/02 05:48

>$argv[1]とはこのプログラムではどんな働きがあるのでしょうか!?



コマンドラインから渡された最初の引数が格納された変数

RTFM.
http://php.net/manual/ja/reserved.variables.argv …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!