ホームページ > バックエンド開発 > PHPチュートリアル > 注意010 PHPにおける==比較演算子の注意

注意010 PHPにおける==比較演算子の注意

黄舟
リリース: 2023-03-04 09:06:01
オリジナル
1134 人が閲覧しました

最近、比較操作を行っているときに、普段は無視しているいくつかの問題に遭遇しましたが、今回は問題が発生するとは予想していませんでした。

PHP の == 比較演算子は、2 つのデータの値が等しい場合は true を返し、そうでない場合は false を返します。ここで言われているのは、値が等しい場合、つまり、値の種類はここでは比較されないということです。例: 12 == '12' 結果は true になります。

PHP変数の型が弱いため、変数の型が意図的に制御されていないことが多く、今回の問題は変数の型が原因です。

array_search 関数を使用するときに問題が発生します。

array_search の機能は、指定された値を持つデータを検索し、値が存在する場合、その値に対応するインデックスを返します。この値が複数回発生した場合は、最初に取得されたインデックスが返されます。値が存在しない場合は false を返します。

私の問題は次のような環境で発生します:

<?php$testA = array(   
 &#39;a&#39; => &#39;123&#39;,   
  &#39;b&#39; => &#39;iphp8.com&#39;,   
   &#39;c&#39; => &#39;014778&#39;,   
   &#39;d&#39; => &#39;14778&#39;,
);
   echo array_search(&#39;14778&#39;, $testA);
ログイン後にコピー

この時点で得られる結果は c になります。

デフォルトでは、array_search は値の型を比較しません。つまり、== 比較を行います。純粋な数値に関しては、文字列であっても比較のために数値に変換されるようです。そのため、先頭の 0 がいくつあるかは関係なく、「14778」と「014778」は等しいため、上記の例では、返される結果は、思ったように d ではなく、c になりました。

この時点で、必要な結果を得るには、値と型の両方を比較する必要がある === 比較を実行する必要があります。

array_search の場合、3 番目のパラメーターに true 値を与えることで合同比較を実行できます。

上記は、PHP の note 010 == 比較演算子の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート