でPHPの文字列比較演算の変更

PHPのタイプの弱い性質のために、あなたがそれらのいくつかの良い、いくつかの奇妙なことを行うことができ、そのうちのいくつかは、あなたが内部の穴に落ちるようになります。例えば:

 エコー '1' + 5 ;

 

一部の言語では、これは、プログラムがクラッシュする可能性がありますが、PHPは整数に任意の文字列を計算しようとします。この場合には、1〜5の整数に文字列を変換し、6を生成するために追加されます。

あなたはJavaScriptでこれを行う場合はところで、あなたは反対の結果を見つけるでしょう。同じ文字との接続には、文字を追加しているので任意の現在の値が文字列であれば、JavaScriptは常に値を切り捨てるしようとします。だから、JavaScriptで結果が「15」になります

私たちは、「1」の文字列に文字列を変更し、同じ操作を実行した場合、結果は5です。

エコー '1' + 5 ;

 

PHPは文字列を整数に変換できない場合は、それが0に想定されるためです。

 

私たちは、それは別のレベルに昇格比較することができます。ビューPHP型の比較表は、次の2つの値を比較するには、2つの異なる方法があります見ることができます。

次のコードスニペットを考えてみましょう。私たちは、結果がどうなるかを楽しみにして?

 

  1. $ = '文字列' ;
  2. $ bの = 0 ;
  3.  
  4. if ( $a == true && $b == false && $a == $b ) {
  5. exit ;
  6. }

那么答案是程序会退出,因为所有这些比较都是正确的。

'a string'== true等于true,因为如果与布尔值进行比较,PHP会将任何非空字符串计算为true。

0 == false等于true,因为与布尔值比较时,整数0被计算为false。

'a string'== 0也计算为true,因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则将其计算为0.因此0等于0,等于为真。

要解决此问题,您可以使用===运算符代替==运算符。此运算符(也称为三重等于运算符)仅在两个值具有相同值时才会求值为true,如果它们是相同类型,则仅计算为true 。因此,如果我们将示例更改为使用三等于运算符,则所有项都将计算为false。这是因为字符串不能是布尔值,整数不能是布尔值,字符串不等于整数。

两个等于运算符之间的差异很重要。每个都有它自己的用途,但如果你对你的价值类型有任何疑问,那么使用三等于运算符,特别是当通过测试会给你的程序带来灾难。

strpos()関数などを使用する場合、三重等号演算子は不可欠です。文字列が見つからない場合にはfalseを返すためです。次の例では$の位置変数がfalseに等しいです。

$位置 = strpos'ABCD' 、'Z'

文字列が位置0で発見された場合はどうなりますか?あなたは二つの等しい演算子を使用する場合は、あなたの位置がfalseに等しくなりますことがわかります。

もし!偽== strpos'ABCD' 'A' )){ 
エコー'が見つかり' ;
} {
エコー「が見つかりません」
}

 

おすすめ

転載: www.cnblogs.com/baocheng/p/11454156.html