数组换位置一.介绍 PHP(外文名:PHP: Hyperte(5)
end($arr); //将指针移向“最后一个元素”,然后取得该元素的值
each($arr); //取得当前元素的下标和值,然后移动指针到下一个位置。
foreach
==foreach不会主动释放$value==
传递方式
默认值传递,引用传递要在变量前加&(foreach($arr as $key => &$value){...})
$key不能设置为引用传递
因为引用传递不会自动销毁$value所以引用传递注意要手动销毁$value,不然可能不小心通$value修改了数组最后一项。(eg:在两个循环都用$value时第一个用了引用传递,第二个用值传递。会将数组最后一项的值改成倒数第二项)
<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $key => &$value) {
echo $value;
}
var_dump($arr);//最后一项是5
var_dump($value);//5(没有释放)
foreach ($arr as $key => $value) {
echo $value;
}
var_dump($arr);//最后一项是4
var_dump($value);//4(因为上面的$value引用传递了,最后$value一直指向数组最后一个元素)
$val = 2;
$value = 1;//现在$value还是指向数组最后一个元素
foreach ($arr as $key => $val) {
echo $val;
}
var_dump($arr);//最后一项是1
var_dump($val);//1(虽然foreach结束但$val不是2,而是最后一项数组最后一项的值1)
foreach过程中进行修改
foreach默认是原数组上进行遍历。
如果在遍历过程中对数组进行了某种修改或使用了数组指针函数,则会复制数组后在复制的数组上继续遍历循环。
foreach中如果值变量是引用传递,则无论如何都是在原数组上进行。
<?php
$arr = array(‘test1‘=>‘test‘,‘test2‘=>‘test‘,22,33);
echo ‘$value‘;
foreach($arr as $key => $value){
$arr[] = ‘new‘;
echo $value;//没有new
}
echo ‘&$value‘;
foreach($arr as $key => &$value){
//每次加上new会循环这个加上的new,进入循环又会加一个new
$arr[] = ‘new‘;
echo $value;//有new并死循环
}
for+next+reset遍历数组
<?php
$arr = array(‘test1‘=>‘test‘,‘test2‘=>‘test‘,22,33);
reset($arr);//数组指针初始化
$len = count($arr);
for($i=0;$i<$len;$i++){
$key = key($arr);//key
$value = current($arr);//value
echo $key,$value;
next($arr);//指针移到下一个元素
}
while+each()+list()遍历数组
<?php
$arr = array(‘test1‘=>‘test‘,‘test2‘=>‘test‘,22,33);
var_dump(each($arr));//四个元素0,1,key,value
list($v1, $v2) = array(‘test‘=>‘test‘,1=>1,2);//将数字索引对应的值放到list的变量中
var_dump($v1, $v2);//null,1
reset($arr);//数组指针初始化
//当each到数组最后的时候,就返回false,即此时循环结束
while(list($key, $value)=each($arr)){
var_dump($key, $value);
}
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-5.html
http://www.jiaoanw.com/
true
教案网
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-5.html
report
2345
end($arr); //将指针移向“最后一个元素”,然后取得该元素的值 each($arr); //取得当前元素的下标和值,然后移动指针到下一个位置。 foreach ==foreach不会主动
好美啊小A