长度超过整型时,键名混乱



    



















    
    
    
    
    
    
    
        




























    
    
    
    
    




ホームページ > バックエンド開発 > PHPチュートリアル > PHP 配列の数値キー名に関連する問題

PHP 配列の数値キー名に関連する問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 11:58:09
オリジナル
975 人が閲覧しました

PHP 配列の数値キー名に関する問題

次に、PHP 配列の数値キー名の概要を示します。

キー名の長さは、int の長さの範囲内にのみ指定できます。 int 範囲の場合、上書きやその他の混乱する状況が発生します

キー名の長さが int で、その範囲内の値にアクセスすると、PHP は数値キー名を強制的に int 数値型に変換します

数値キー名の長さが 19 桁を超える場合は 0 になります


キー名が通常の長さの場合、文字列または数値型は同じです

$i = 126545165;$arr['126545165'] = 'abc';$arr[126545165] = 'uio';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));
ログイン後にコピー




長さが整数を超える場合、キー名が混乱します

$i = 12312312312312;$arr['1000000000147483649'] = 'abc';$arr[1000000000147483649] = 'uio';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));
ログイン後にコピー





20文字を超えるとキー名が0になります

$i = 123123123123123123123123123123;var_dump($i);echo '<br>';$arr[123123123123123123123123123123] = 'abc';$arr[strval(123123123123123123123123123123)] = 'abc';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));echo '<br>';var_dump(isset($arr[strval($i)]));echo '<br>';var_dump(array_keys($arr));
ログイン後にコピー




キー名として変数に直接アクセスする場合は異なります。結果

$i = 123123123123123;var_dump($i);echo '<br>';$arr[$i] = 'abc';$arr[strval($i)] = 'abc';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));echo '<br>';var_dump(isset($arr[strval($i)]));echo '<br>';var_dump(array_keys($arr));
ログイン後にコピー


上記のテストから:

キー名が数値であり、範囲が int 以内の場合、 string や int はアクセスには影響しません

長さが int より大きい場合は、自動的に float に変換され、変換とアクセスによってさまざまな混乱が生じたり、直接 0 になったりするため、文字列型


$i = 123123123123123123123123123123;$j = '123123123123123123123123123123';$arr1[strval($i)] = 'abc';$arr2[$j] = 'abc';var_dump($arr1);echo '<br>';var_dump($arr2);
ログイン後にコピー


に一律に変換するのが最善です



したがって、PHP 配列を動的に操作する場合、キー名に数字が含まれるか、長さが int より大きいかがわからない場合は、キー名 strval を操作用の文字列に変換するのが最も安全です

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