ホームページ >php教程 >php手册 >PHP STRINGトラップ原理の説明

PHP STRINGトラップ原理の説明

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

文字列は一連の文字です。
文字による文字列のアクセスと変更
文字列内の文字は、$str[42] のように、角配列括弧を使用して文字列の後に目的の文字の 0 から始まるオフセットを指定することによってアクセスおよび変更できます。この目的では、文字列を文字の配列として考えてください。
注: 同じ目的で、$str{42} のように中括弧を使用して文字列にアクセスすることもできます。ただし、この構文は PHP 5.3.0 では非推奨になりました。代わりに、$str[42] などの角括弧を使用してください。
警告
範囲外のオフセットに書き込むと、文字列にスペースが埋め込まれます。非整数型は整数に変換されます。不正なオフセット タイプは E_NOTICE を発行します。負のオフセットは書き込み時に E_NOTICE を発行しますが、空の文字列を読み取ります。割り当てられた文字列の最初の文字のみが使用されます。空の文字列を割り当てると、NUL バイトが割り当てられます。

以上は php マニュアルの中の原文です。
必要な場合は、私が注意すべき数組の場合は、方角番号 "[]" を使用し、文字列として操作記号 "[] を使用することもできます。ただし、注意が必要なのは、入力文字列「[]」内の内容がint型に変換される場合があることです。
echo $str['php'];//結果は 1、オフセット 'php' の转化が integer であるため、これは文字列の最初の文字です。
var_dump(isset($str['php']));//結果は bool(true) の原理と同じです。
したがって、isset を使用して、ある設定に問題が存在するかどうかを判断するときに、この最初の判断を行います。以下に、転送される量が数組であるかどうかを判断し、その後、指定されたキーが存在するかどうかを判断します
例://必要に応じて、転送される数組が存在するかどうかを判断する 'php' このキーを実行すると、比較安全法は次のようになります:

复制代码代码如下:

function is_set($arr, $key){
if (is_array($arr) ) && isset($arr[$key])) {
//存在するキー $key の逻辑
}
}


上の関数に is_array が追加されていない場合は、適切な文字列が渡される時点で、結果は私が希望するものではありません。

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