4

まず、Stack OverflowとGoogleの両方で、この質問に付けたタイトルのさまざまなバリエーションを検索してみました。解決策が見つかりませんでした。

私はPHPにかなり慣れていません。文字列比較の使用eqと使用の違いがわからないほど新しいです!==

私は通常==、PHPで文字列を比較するために使用します。私はそれで快適です。

eqしかし、文字列を比較するためにコードを使用しているのを見てきました。そして、ぼんやりと誰かが「ああ!私は==文字列を比較するために使用しました。eq'を使うべきだった。

==単純な文字列比較を使用しても大丈夫かどうかを知りたいだけですか?特殊なケース、大文字と小文字を区別するサブストリング、またはその他の派手なタイプのストリング比較については話していません。appleと同じかどうかを確認するだけappleです。

==十分ですか?または私は使用する必要がありますeq


私の間違い:(「よく研究されていない」質問をクリアしてくれてありがとう!それはPerlだったに違いない。HTMLに埋め込まれたコードを見て混乱し、PHPを埋め込む別の方法だと思った。ごめんなさい。

4

5 に答える 5

11

eqPHPには演算子はありません。ただし==、あり===ます。

===は厳密な比較演算子であり、型変換は行いません。

==型変換を行います(たとえば、'' == 0に評価されtrueます)。

完全なリストについては比較演算子を、 PHP型変換の規則については型ジャグリングを参照してください。私が見つけた唯一の参照は、へeqの引数としてでしたversion_compare()

于 2009-12-07T08:35:32.700 に答える
6

私のコメントに添えて:Perleqの演算子は文字列の同等性をテストしますが、数値の同等性のみをテストします。==

PHPはPerlスクリプトのコレクションとして一度開始されましたが、私はそうは思いません。彼らはこの演算子をコピーしており、このページは同意しているようです。

于 2009-12-07T08:39:29.617 に答える
2

eq PHPには演算子がありません。あなたはおそらくPerlについて考えているでしょう。ここで、eqは2つの変数を文字列として比較します。

PHPには、等式演算子(==)と真の等式演算子(===)があります。真の等式演算子(===)は、演算子の両側の式が両方とも等しく、同じタイプであることをテストします。等式演算子(==)は、各式を同じ型に強制変換してから、それらを比較しようとします。

//this is true
'45' == 45

//this is false
'45' === 45

型に関しては間違った推測をする場合がある==ので、同じ型の式が2つあることがわかっている場合は、を使用することをお勧めします===

于 2009-12-07T08:40:44.110 に答える
1

オペレーターは==、2つの変数、リテラル、またはこれら2つのプログラムエンティティの組み合わせの間に完全な一致があるかどうかをチェックします...しかし、タイプセーフではありません!

これを使用して文字列を比較すると、文字列を正規表現と比較して完全に一致するものを見つけることになります。

しかし、PHPで文字列を比較するための最も強力な方法はたくさんあります。何を達成しようとしているのかを知る必要があるだけです....例:、、、similar_text()など。またはstrcasecmp()、関数のstrcmp()1つを呼び出して正規表現を使用し、独自のパターンで文字列を比較できます。ereg()eregi()

于 2009-12-07T08:51:30.597 に答える
0

eqPHPではニュースになりますが、厳密な比較演算子があります

$a === $b

詳細については、マニュアルを確認してください。

于 2009-12-07T08:35:53.027 に答える