<?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啊?很费解哦,麻烦讲解得详细点,拜托了啦!

解决方案 »

  1.   

    // 创建一个简单的数组
    $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);
      

  2.   

    //或者:
    $array = array_fill(0,count($array),null);  //用null值填充数组
      

  3.   

    本帖最后由 xuzuning 于 2011-04-20 17:29:54 编辑
      

  4.   

    汗没看清楼主的问题。。抱歉了。。
    不过,貌似楼主看手册也不够仔细,手册中提到的这个例子的下面已经说明了,如果要重建索引号,可以这样处理:// 创建一个简单的数组
    $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);
      

  5.   

    这是php对变量建立保存机制决定的,很难去一一说明(有心研究可以去google一下php垃圾回收机制等等和php的C源代码)知道是这样变化就行了
      

  6.   


    // 创建一个简单的数组
    $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);