ホームページ >バックエンド開発 >PHPチュートリアル >PHP STRINGトラップ
文字列は一連の文字です。文字による文字列のアクセスと変更
文字列内の文字は、$str[42] のように、角配列括弧を使用して文字列の後に目的の文字の 0 から始まるオフセットを指定することでアクセスおよび変更できます。この目的では、文字列を文字の配列として考えてください。
注: 同じ目的で、$str{42} のように中括弧を使用して文字列にアクセスすることもできます。ただし、この構文は PHP 5.3.0 では非推奨になりました。代わりに、$str[42] などの角括弧を使用してください。
警告
範囲外のオフセットに書き込むと、文字列にスペースが埋め込まれます。非整数型は整数に変換されます。不正なオフセット タイプは E_NOTICE を発行します。負のオフセットは書き込み時に E_NOTICE を発行しますが、空の文字列を読み取ります。割り当てられた文字列の最初の文字のみが使用されます。空の文字列を割り当てると、NUL バイトが割り当てられます。
都は php マニュアルの中の原文です。
要注意の時期、私が问数組を必要とする時期は、上の角番 “[]” を使用し、文字列を 1 つとして操作記号 “[]” を使用してアクセスすることもできます。ただし、注意が必要なのは、文字列を入力すると、操作子「[]」内の内容が int 型に変換される場合があることです。
echo $str['php'];//結果は 1,オフセット 'php' の转化が整数であるため 0,存在する访问的是字列の第一文字符.
var_dump(isset($str[' php']));// 結果は bool(true) の原理と同じです。
したがって、isset を使用して、ある時点で設定が存在するかどうかを判断し、この判断の下で、送信される量が数であるかどうかを判断します。指定されたキーが存在するかどうかをさらに判断します
例://必要な場合は、'php'このkeyが存在するかどうかを判断します、より安全な動作法は次のとおりです:
function is_set($arr, $key){
if (is_array($arr) && isset($arr[$key])) {
//存在该值的逻辑
} else{
//$arr は数组 または数组$arrキー $key が存在しませんの辑辑
}
}
上の関数に is_array の追加がない場合、文字列が 1 つ送信されている時点で、結果は私たちの願望ではありません。
これは记、以免後も似たような問題が現れました。