単二電池

$time1 = $param{'time1'};
$yoyakudatafile = $param{'roomdir'}."/".$param{'year'}.$param{'month'}.".cgi";
@yoyakudata = &fileopen($yoyakudatafile);
foreach(@yoyakudata){
($data1,$data2,$data3,$data4,$data5,$data6) = split(/<>/);
if($data1 ne $param{'day'}){ next; }
if($data2 == $time1){ &error('エラー','その時間はすでに予約が入っています。'); }
}

上記の文で実行すると10:00に予約が入っていて10:30に予約を入れようとすると
「その時間はすでに予約が入っています。」とエラーになってしまいます。

参考までに、
$time1は、「10:00」を選べば「10:00」、「10:30」を選べば「10:30」という数字が入ります。
data1は、日にちの数字が入り、
data2は、時間
data3は、名前A
data4は、名前B
data5は、名前C
のデーターが間に<>を入れて、データーになってます。

($data2 == $time1)の部分で、
$data2には既に予約の入っている「10:00」があり、
$time1には予約を入れようとしている「10:30」なので、
イコールにはならずに予約できるようになるはずなのですが・・・

ご教授お願いいたします。

A 回答 (1件)

10:00 と 10:30 は数字として演算すれば同じ 10 なのでイコールです。



これが仮に 10.00 と 10.30 なら == で比較しても異なります。

数字として比較する場合は : 以降は無視され
両方 10 となり等しいと判断されるってこと。

'10:00' == '10:30'
'10:00' ne '10:30'

ということです。
    • good
    • 0
この回答へのお礼

ヒントありがとうございます。
eqを使えばよかったんですね?
ありがとうございました。

お礼日時:2005/04/17 03:39

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