PHP底层-引用数组
代码举例分析1:
$arr = array(11,22,33);
$tmp = $arr;
php中定义数组,结构如下,zvalue对应的是指针值,该指针指向一个hashtable,hashtable中第一位是可以理解成数组key,第二位是内存地址,指向一个普通变量的zvalue结构;type对应的是is_array,refcount_gc=1,is_ref_gc=0;当将
流程如下图:
代码举例分析2:
$arr = array(11,22,33);
$tmp = $arr;
$arr[1] = 99;
echo $tmp[1];
赋值99的时候,会发生分裂。
流程如下图:
特殊的怪现象:
/** 例子1 */
$arr = array(11,22,33);
$x= &$arr;
$tmp = $arr;
$arr[1] = 99;
echo $tmp[1]; // 11
/** 例子2 */
$arr = array(11,22,33);
$x= &$arr[1];
$tmp = $arr;
$arr[1] = 99;
echo $tmp[1]; // 99
可以理解为
引用时的怪现象
$arr = array(11,22,33);
foreach($arr as $v) {
}
var_dump(current($v)); // 最后数组指针停留在数组结尾,取不到值,false
foreach的时候,想当于copy一个
$arr = array(11,22,33);
foreach($arr as $k=>$v) {
$arr[$k] = $v;
}
var_dump(current($arr)); // 22
上面情况当,重新赋值
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Php处理大文件-分割和合并
- 下一篇:没有了
