php - 得到以下代码的奇怪输出。我需要解释它如何计算输出
问题描述
<?php
$test = 'text1';
$test["02"] = "Hello";
var_dump($test);
输出为:: string(5) "teHt1"
解决方案
在第一行 $test 将值存储为 'text1' 开始为字符串从左到右从 0 到 (stringlength-1) 给出偏移值,并且字符串中的每个字符字节大小将占用一个字节的内存。
IE,
...
$test[0] =>'t';
$test[1] =>'e';
$test[2]=>'x';
$test[3]=>'t';
$test[4]=> '1';
...
因此,$test[2] 当前值为 'x' 但我们试图在 $test["02"] = "Hello"; 行中覆盖 但它的内存大小只有一个字节,所以它只存储了 'Hello' 中字符串中的 'H'
这就是为什么当你转储变量时 $test 值现在是"teHt1";
推荐阅读
- javascript - 反应:如何在输入每个字符时使密码字符可见,并在反应的几个时间间隔后隐藏(*)?
- android - 如何阻止我的计数器变量被每一行覆盖?
- oop - kotlin 类构造函数参数的默认值类型是什么?
- java - 会话在android的webView中不起作用
- mysql - 具有不同类别的每列的子查询的 Mysql 查询
- c++ - 为指针静态分配内存与为指针删除动态分配内存有什么区别?
- unit-testing - How can i test a function that return a promise or reject - Jasmine and Karma
- python - 如何使用pycharm删除mongodb中文档的重复
- networking - 如何在statnet的二分网络中仅将顶点属性分配给一种模式?
- c++ - 调试BFS,计算直到所有橘子都烂掉的最短时间