首先来看一组简单例子:
$ARR =array();
$ARR[]="A";
$ARR[]="B";
$ARR[]="C";
$ARR[]="D";
$ARR[]="E";
print_r($ARR);
//打印输出的结果是:Array ( [0] => A [1] => B [2] => C [3] => D [4] => E )
这说明给数组$ARR[ ] 不停赋值时,数组指针会不断移动!于是我就联想到了把select 查询结果保存为数组储存的方式:
$rs =mysql_query("select * from table");
$ARR =array();
while($row =mysql_fetch_array($rs,,MYSQL_ASSOC)){
//mysql_fetch_array的结果实际就是个一维关联数组;
$ARR[ ] =$row;//将每一条sql记录逐步储存至$ARR数组
}
/* $ARR变成了一张二维混合数组,你也可以理解为一张EXCEL表哦!
{
{"a"=>a0,"b"=>b0},
{"a"=>a1,"b"=>b1},
{"a"=>a2,"b"=>b2}
}
(上面的书写也许不正确,但是好理解,所以我就这么写了 O(∩_∩)O哈哈~)也即是说:
$ARR[0] 的值是一维数组:{"a"=>a0,"b"=>b0}
$ARR[1] 的值是一维数组:{"a"=>a1,"b"=>b1}
$ARR[2] 的值是一维数组:{"a"=>a2,"b"=>b2}
*/
//逐行遍历数组内容方法:
foreach($ARR as $new_arr){//foreach 每一次循环会自动移动到下一指针对应的值(一维数组、就像EXCEL的一行记录一样,怎么好理解就怎么理解,反正是一维数组,而且是关联型的数组,要用array['键名'] 输出对应值)
echo $new_arr['a'];echo $new_arr['b'];
}
//最后bb两句:
forech($arr as $new_arr){} 与 forech($arr as $v = > $k){}
forech($arr as $new_arr){} 用得最多,一般主要目的是为了遍历输出数组每一行的值(尤其是在知道“键名”的情况下吧,尤其是将sql记录集转换后为数组的情况下)。
forech($arr as $v = > $k){}用得很少,$v 代表键名,$k 代表键值。用这种方式遍历,我暂时还没发现有毛意义, 可能是一般不知道“键名”吧,所以用这种方式输出全部数据;