(1)PHP之数组解说

   PHP中常用的复杂类型是array();这与传统的C,C++,Java和C#的数组不一样(C#等数组存得的值是统一类型,例如 int[] int_arr,而PHP的数组是是这样的array(“1”=》1,“people”=>array(“张三”,“李四”),"2"=》bool),也就是PHP的没规范数组存得值类型必须是统一的,当然这也和它数组的弱语言特性有关)。

(2)PHP之数组分类

   PHP的数组分为索引数组和关联数组:(索引数组就是数组下标用的是数字例如$array[1],关联数组的下标可以是$array["ap"]或是$array["你好"]);在我看来,索引数组是关联数组的特殊形式(规范:下标为数字,且下标值默认从来0开始;并且下标的数字时递增的;当数组下标同时有数字和关联字符的时候,如不指定下标值的时候,其是从最后一个数字递增开始);

  例如下的代码

$arr2 = array("1"=>1,2=>3, "苹果"=>5,7,11=>8,10,"2"=>123);
foreach ($arr2 as $key=>$value) {
echo "当前的item Key值为:".$key ." => Value值为:".$value."<br>";
}

输出的结果是:


 

注意 $arr2的key值为2的那条数据原来是2=》 ,被“2”=》123 替换了

     1:这说明索引数组是关联数组的特殊情况,其key值为数字,且key 为 数字 和数字字符形式是等价的;

     2:array 声明中相同的key数据有N条时,其最后value会会覆盖前面的value值;

(3)数组之遍历

  数组遍历可以使用C#,Java的形式及for (初始值i;遍历次数;i++)的形式,这适用于索引数组;不过常用的是foreach($arrs as $item)或者是foreach($arrs as $key =>$value);注意的是在不指明引用&或$arrs不是是全局变量的时候,在循环体内修改 $arr和$item是不受影响的,注意$arrs $item($key ,$value)是copy形式,对其修改值不影响原有的值。(只有在其加上引用符合,表明该值是引用形(则其会指向原有数据,而不是copy数据));即是:遍历的$arrs必须在foreach前指明是哪个数组的引用;或者是指定foreach($arrs as &$item)或foreach($arrs as $key =>&$value),就可以修改原来的数组的Value或者是Key;注意的是foreach($arrs as &$key =>$value) key 加引用符是错误的;

   1:当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。而while循环需要reset

   2:foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此即使有 each() 的构造,原数组指针也没有变,数组单元的值也不受影响.

   3.1.foreach 中使用引用的情况。

    普通情况下,foreach($arr as $value)中的$arr和$value是拷贝,不受外部影响的,

   3.2  双重遍历数组的写法

         如果两次循环一个数组,一定不能这样写,也就是foreach 循环的时候 $arr 和$value参数相同的时候

1
2
3
foreach($arr as &$value){}
  
foreach($arr as $value){}

    

//solution 1
  
foreach($arr as &$value){}
  
unset($value);
  
foreach($arr as $value){}
  
//solution 2
  
foreach($arr as &$value){}
  
foreach($arr as &$value){}
  
//solution 3
  
foreach($arr as &$value){}
  
$arr2 = $arr;
  
foreach($arr2 as $value){}

     防止foreach出现未定义情况,尽量这样来写foreach    

 
foreach((array)$arr as $value) {}
 

      有些地方可能我理解错了,请大家帮忙指正!!

                                                                                                                                 -——————————————于2015/6/7 学习 

posted on 2015-06-07 00:03  聚人生  阅读(145)  评论(0)    收藏  举报