数组运行机制.
从左到右 按 键值生成 内容.无键值情况 则 按 数字顺序生成 键值。以上
左到右的情况中 键值 为 14 的有2个数组现排序 按插入情况排列
[0] = 1 (1)
[14] = 高某 (2) <- (010)98765432 (4) 覆盖 但 数组插入排序是 排 第2 的 所以现在 依然排于 2
[15] = A公司 (3) 

解决方案 »

  1.   

    晕,你重复定义了
    array(
    14=>"高某",
    14=>"(010)98765432"
    );
    自然就被(010)98765432,覆盖了
    但是按照数组的排列14=>"高某",原来排在第二个,
    所以14=>"(010)98765432"排在第二个
      

  2.   

    $contact = array(
        1,
        14 => "高某", 
        "A公司", 
        "北京市",
        14 => "(010)98765432",
        "[email protected]");
    // 格式化打印出来,如下:
    echo '<pre>';print_r($contact);
    /*
    Array
    (
        [0] => 1
        [14] => (010)98765432
        [15] => A公司
        [16] => 北京市
        [17] => [email protected]
    )
    */// 由此可以看出后面的“(010)98765432”将前面的“高某”覆盖了,这是为什么呢?因为php中同维度数组中不允许存在相同的键,你可以将键看成人的身份证号码,值看成是人的名字,名字有相同而身份证号不会有相同。之后数组变成如下:
    $contact=array(1,14=>"(010)98765432","A公司","北京市","[email protected]");//这个时候因为"A公司","北京市","[email protected]"这三个在键14的后面,那么它们的键不会再从1开始了,而是接着14开始,也就是15
    //咱们再看个例子(将"A公司"移动到1的后面):
    $contact=array(1,"A公司",14=>"(010)98765432","北京市","[email protected]");
    echo '<pre>';print_r($contact);//结果输出如下:
    /*
    Array
    (
        [0] => 1
        [1] => A公司
        [14] => (010)98765432
        [15] => 北京市
        [16] => [email protected]
    )
    */