PHP 一维数组根据某个值截断
场景
1.有一个数组 $arr = [‘123’=>1,‘253’=>5,‘173’=>0,‘143’=>5,‘145’=>0],在出现第一个值为0 的时候截断后面的键值。得到结果 $arr = [‘123’=>1,‘253’=>5]
截断某个值后面所有键值
<?php
$arr = ['123'=>1,'253'=>5,'173'=>0,'143'=>5,'145'=>0];
static $res=[];
foreach($arr as $key=>$v){
if($v != 0){
$res[$key] = $v;
}else{
break;
}
}
print_r($res);
输出 :$arr = ['123'=>1,'253'=>5]
---------------------
对比用法 unset
//unset 表示销毁某个值,但是数组索引不会重新排列
<?php
$arr = ['123'=>1,'253'=>5,'173'=>0,'143'=>5,'145'=>0];
unset($arr['173'])
print_r($arr);
输出 :Array ( [123] => 1 [253] => 5 [143] => 5 [145] => 0 )
---------------------
对比用法 array_splice
//array_splice表示销毁某个值,数组索引重新排列
<?php
$arr = ['123'=>1,'253'=>5,'173'=>0,'143'=>5,'145'=>0];
array_splice($arr,1,1);
print_r($arr);
输出 :Array ( [0] => 1 [1] => 0 [2] => 5 [3] => 0 )
对比用法 array_filter
//array_splice表示过滤某个值 -(过滤空数组,或者 0 ,false)
<?php
$arr = ['123'=>1,'253'=>5,'173'=>0,'143'=>5,'145'=>0,'142'=>''];
$arr = array_filter($arr);
print_r($arr);
输出 :Array ( [123] => 1 [253] => 5 [143] => 5 )
---------------------
//自定义过滤
$arr = ['123'=>1,'253'=>2,'173'=>0,'143'=>5,'145'=>3,'142'=>''];
$resArr=array_filter($arr,'fun_odd');
print_r($resArr);
function fun_odd($arr)
{
if ($arr % 2 == 1) {
return $arr;
}
}
输出 :Array ( [123] => 1 [143] => 5 [145] => 3)
---------------------