各位大大,帮个忙,解释一下!

guojiguoye 2011-04-20 05:09:30
<?php
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有单元,但保持数组本身的结构
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);
?>
各位大侠,这段程序最后输出的键名为什么是5而不是0啊?很费解哦,麻烦讲解得详细点,拜托了啦!
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guojiguoye 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuzuning 的回复:]
$ar[100] = 100;
unset($ar[100]);
$ar[] = 101;
print_r($ar);

Array
(
[101] => 101
)

删除一个数组元素,并不是重构数组,所以数组的内部指针并没有更改
而形如 $ar[] = 101; 这样的赋值,总是从内部指针设定的位置开始设置下标


这是 php 内部机制,不必深究
[/Quote]
谢谢你的讲解,我明白了,呵呵!
职业驱魔师 2011-04-20
  • 打赏
  • 举报
回复

// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有单元,但保持数组本身的结构
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);

$array = array_values($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);
ImN1 2011-04-20
  • 打赏
  • 举报
回复
这是php对变量建立保存机制决定的,很难去一一说明(有心研究可以去google一下php垃圾回收机制等等和php的C源代码)

知道是这样变化就行了
乌镇程序员 2011-04-20
  • 打赏
  • 举报
回复
汗。。。没看清楼主的问题。。抱歉了。。
不过,貌似楼主看手册也不够仔细,手册中提到的这个例子的下面已经说明了,如果要重建索引号,可以这样处理:

// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有单元,但保持数组本身的结构
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);

$array = array_values($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);
xuzuning 2011-04-20
  • 打赏
  • 举报
回复
$ar[100] = 100;
unset($ar[100]);
$ar[] = 101;
print_r($ar);

Array
(
[101] => 101
)

删除一个数组元素,并不是重构数组,所以数组的内部指针并没有更改
而形如 $ar[] = 101; 这样的赋值,总是从内部指针设定的位置开始设置下标


这是 php 内部机制,不必深究
乌镇程序员 2011-04-20
  • 打赏
  • 举报
回复
//或者:
$array = array_fill(0,count($array),null); //用null值填充数组
乌镇程序员 2011-04-20
  • 打赏
  • 举报
回复
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有单元,但保持数组本身的结构
foreach ($array as $i => $value) {
$array[$i] = '';
}
print_r($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧