paizaの問題で、なかなか気付けないミスがあったので書きます。
※paizaでは、問題の答えを掲載することは禁止されているので、ある程度ぼかして話します。
問題
問題の内容は、株の収支を計算するというもので、
1 |
input_line = fgets(STDIN); |
で標準入力から値をもらって、コードを書き進めました。
ただ、途中で
1 2 3 |
if($A >= $B){ 処理 } |
というごくごくありふれたif文を書いたときに、なぜかそれが意図した通りに動作しませんでした。
Googleで色々調べたり、コードと睨めっこをしてようやくなにが原因か気が付きました。
型の宣言ができていない
それは、変数の型が宣言できていないということです。
気付いたきっかけは、$A>=10 と書いて条件を変えたり、var_dumpやecho でとにかくどこが間違っているかを出力しながら検討していた時です。
$Aも$Bもどうやらデータ型がString、文字型になっていたようです…。
両方とも値を配列にいれたり、幾つかの処理をしてたのでデータ型が正しく把握できていなかったようです。
PHPは変数などを扱うときに、特に型宣言をしなくていいですが、今回はその機能のせいで頭を悩まされました。
解決策
変数に(int)を使って、整数型を宣言すると意図した通りに処理されました。
簡単なことですが、割とドツボにはまりました…。
反省。
コメント