この記事では主に、PHP が陥る可能性のある落とし穴について、小さな例を通して皆さんと共有し、皆さんのお役に立つことを願っています。
今日質問されました:
$var = 'test'; if (isset($var['somekey'])) { echo 'reach here!!!'; }
「ここに到達します!!!」と出力されますか? - -もちろん違います。私は何も考えずに答えた。
案の定、罠にはまってしまいました!出力されますよ!罠にはまらなかったら、おめでとうございます。下を向く必要はありません。
それでは、分析してみましょう。 isset が設定されたので、値は何でしょうか?印刷してみましょう:
var_dump($var['somekey']); //=>output: string(1) "t"
は $var の最初の文字である 't' です。
変数 $var は文字列なので、C 言語を学習したことがある方なら、それが char 型の配列であることがわかると思います。そのため、$var[0] $var[1] $var[$i] を使用できます。 ...取得するには $var の $i+1 番目の文字。では、なぜ「somekey」が最初の文字を取得したのでしょうか?これは、PHP がここで暗黙的な型変換を行い、ここの文字列を int 型に変換するためです。 intval('somekey') 関数を試したことがある場合は、得られる値が 0 であることがわかると思います。 $var['somekey']最終的には $var[0] になります。最後に「t」を取得しました。
以上がPHP が陥る可能性のある落とし穴 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。