PHP Array unset() array_values() array_search() array_splice()

       遍历一个数组,删除了数组中的某一个元素,是数组中的键值重新排列  可以使用 array_splice() 结合array_search()使用 。或者是遍历数组的时候:unset() 这个元素之后,使用array_values() 处理数组。array_values()是取出数组中元素的值,放进一个以数字为索引的新数组里面,从而达到了对数组键值重新排列的效果。

array_search() & array_splice():

$arr = array('0' => '321','1' => '322','2' => '323','3' => '324','4' => '325','5' => '326',);
$key=array_search('324',$arr);
array_splice($arr,$key,1);
var_dump($arr);

array_search() & unset():

  1. $tmp = '324';
  2. $arr = array(
  3. '0' => '321',
  4. '1' => '322',
  5. '2' => '323',
  6. '3' => '324',
  7. '4' => '325',
  8. '5' => '326',
  9. );
  10. foreach( $arr as $k=>$v) {
  11. if($tmp == $v) unset($arr[$k]);
  12. }
  13. $arr = array_values($arr);
  14. print_r($arr);

Note:
有一个问题可以注意一下:
当遍历一个数组进行处理的时候:
$arr = array('a','b','bb','d');
for ($i=0;$i<count($arr);$i++){
if(strpos($arr[$i],'b')!==false){
//$i = 1
//$arr[1]=a
//$arr[2]='bb'
array_splice($arr,$i,1);
//$i = 1
//$arr[1] ='bb'
//$arr[2]='d'
}
}
//output: Array ( [0] => a [1] => bb [2] => d )
print_r($arr);

我原本是想要删除数组中所有含有b的元素。结果却如此,原因就是当执行了array_splice()后,数组原来的顺序被重新定义了,原本下次循环才被处理的元素,索引变成了现在正操作的索引,也就是说下次循环的时候就跳过了原来元素的下一位。所以在这种两个相邻元素都需要被处理的情况下,就出问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值