iRSSの日記

はてなダイアリーiRSSの日記の続き

[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 や "" といった値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。

PHPのリファレンスはすばらしい

PHP: PHP マニュアル - Manual
リファレンスは、すばらしいですよね。

みやすいです。