[PHP][配列]array_search() の戻り値 0 とFALSEを区別するには
わけあってPHPのコードを書いています
しばらくRubyだったこともあり、美しいオブジェクト指向の世界から、やってくると、PHPのなんともいえない物悲しさがたまらんです。
しかも、PHP 4.xなもので、ますます、中途半端な状況。
配列を長さを調べるのにも、array系の関数に、配列を引数で渡さなきゃならない。
array.length($a);
rubyなら
a.length
ですむのになあ。
==で比較するとFLASEと0は同一視されるので注意
array_search -- 指定した値を配列で検索し、見つかった場合に対応するキーを返す
array_search() 配列中に見付かった場合にそのキーを返します。そうでない場合にFALSEを返すのだが、見つかった場合だけ処理させたい場合は、
$a = array(1,2,3);
$key = array_search(1,$a);
if($key == FLASE){
print '見つかりません';
}else{
print $key;
}
としてしまうと、このとき$key=0で見つかっているのだが、0 == FLASE も成立するので、print '見つかりません'が動いてしまう
こういう場合は、$key == FLASEじゃなくて、$key === FLASE にすればいいようです。
===
等号3つははじめてみました。
この関数は論理値 FALSE を返す可能性がありますが、FALSE として評価される 0 や "" といった値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。
[PHP][配列]array_search() の戻り値 0 とFALSEを区別するには
わけあってPHPのコードを書いています
しばらくRubyだったこともあり、美しいオブジェクト指向の世界から、やってくると、PHPのなんともいえない物悲しさがたまらんです。
しかも、PHP 4.xなもので、ますます、中途半端な状況。
配列を長さを調べるのにも、array系の関数に、配列を引数で渡さなきゃならない。
array.length($a);
rubyなら
a.length
ですむのになあ。
==で比較するとFLASEと0は同一視されるので注意
array_search -- 指定した値を配列で検索し、見つかった場合に対応するキーを返す
array_search() 配列中に見付かった場合にそのキーを返します。そうでない場合にFALSEを返すのだが、見つかった場合だけ処理させたい場合は、
$a = array(1,2,3);
$key = array_search(1,$a);
if($key == FLASE){
print '見つかりません';
}else{
print $key;
}
としてしまうと、このとき$key=0で見つかっているのだが、0 == FLASE も成立するので、print '見つかりません'が動いてしまう
こういう場合は、$key == FLASEじゃなくて、$key === FLASE にすればいいようです。
===
等号3つははじめてみました。
この関数は論理値 FALSE を返す可能性がありますが、FALSE として評価される 0 や "" といった値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。