长度超过整型时,键名混乱
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]));Salin selepas log masuk
长度超过整型时,键名混乱
$i = 12312312312312;$arr['1000000000147483649'] = 'abc';$arr[1000000000147483649] = 'uio';var_dump($arr);echo '<br>';var_dump(isset($arr[$i]));Salin selepas log masuk
长度超过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));Salin selepas log masuk
将变量直接作为键名存取,结果又有不同
$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));Salin selepas log masuk从上面的几种测试来看:
如果键名为数字,且范围在 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);Salin selepas log masuk
所以在动态操作 PHP 数组时,如果不能确定键名是否会出现数字或者长度大于 int ,则统一将键名 strval 转换为 字符串来操作最为稳妥
Kenyataan Laman Web iniKandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cnArtikel terbaru oleh pengarang
2024-10-09 16:42:41 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:32Isu terkinifunction_exists() tidak boleh menentukan fungsi tersuai Ujian fungsi () {return true;} jika (function_exists ('test')) {echo "test is functio...daripada 2024-04-29 11:01:01021429Tiada output dalam tetingkap induk document.onclick = function(){ window.opener.document.write('Saya adalah output tetingkap ...daripada 2024-04-18 23:52:34011284Apakah persamaan moden bagi set rentetan KURANG Untuk contoh set rentetan dan kegunaannya, lihat Menggunakan Sifat Set Rentetan KURANG dan...daripada 2024-04-02 13:29:3601361Cadangan popularTutorial PopularLagi>
Tutorial Video Permulaan JAVA2441140 Muat turun terkiniLagi>
- Tentang kita Penafian Sitemap
- Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!