长度超过整型时,键名混乱
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]));Nach dem Login kopieren
长度超过整型时,键名混乱
$i = 12312312312312;$arr['1000000000147483649'] = 'abc';$arr[1000000000147483649] = 'uio';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));Nach dem Login kopieren
长度超过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));Nach dem Login kopieren
将变量直接作为键名存取,结果又有不同
$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));Nach dem Login kopieren从上面的几种测试来看:
如果键名为数字,且范围在 int 以内,字符串或者 int 不会对存取有什么影响
如果长度大于 int 时会自动转化为 float ,再转换进行存取出现各种混乱情况,甚至直接变成 0,所以最好是统一转换为 string 类型
$i = 123123123123123123123123123123;$j = '123123123123123123123123123123';$arr1[strval($i)] = 'abc';$arr2[$j] = 'abc';var_dump($arr1);echo '<br>';var_dump($arr2);Nach dem Login kopieren
所以在动态操作 PHP 数组时,如果不能确定键名是否会出现数字或者长度大于 int ,则统一将键名 strval 转换为 字符串来操作最为稳妥
Erklärung dieser WebsiteDer Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cnNeueste Artikel des Autors
2024-10-09 16:12:01 2024-10-09 13:33:51 2024-10-09 12:27:11 2024-10-09 12:00:03 2024-10-09 11:03:31 2024-09-20 15:51:33 2024-09-20 15:47:32 2024-09-20 15:45:32 2024-09-20 15:39:32 2024-09-20 15:38:32Aktuelle Ausgabenverwandte ThemenMehr>
- Was ist eine Dump-Datei?
- Apple Pay kann keine Karte hinzufügen
- So konfigurieren Sie den virtuellen JSP-Speicherplatz
- Methode zum Öffnen der Bereichsberechtigung
- Mit welcher Software öffnen Sie DAT-Dateien?
- Detaillierte Erläuterung der Verwendung der Oracle-Substr-Funktion
- Lösung für keinen Ton im Win7-System
- Verstümmelte Zeichen beginnend mit ^quxjg$c
Beliebte Empfehlungen
Beliebte TutorialsMehr>
php入门教程之一周学会PHP4242638 JAVA 初级入门视频教程2440955 小甲鱼零基础入门学习Python视频教程500560 PHP 零基础入门教程839071
- Über uns Haftungsausschluss Sitemap
- Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!