ホームページ  >  記事  >  バックエンド開発  >  あなたも陥る可能性のある PHP の罠

あなたも陥る可能性のある PHP の罠

WBOY
WBOYオリジナル
2016-06-13 12:37:23854ブラウズ

あなたも陥るかもしれない 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」を取得しました。

終わり。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。