Php 如何从另一个数组创建一个数组数组,通过子数组的特定键对其进行过滤?
我有以下数组:Php 如何从另一个数组创建一个数组数组,通过子数组的特定键对其进行过滤?,php,arrays,filter,Php,Arrays,Filter,我有以下数组: $array = [ [A,a,1,i], [B,b,2,ii], [C,c,3,iii], [D,d,4,iv], [E,e,5,v] ]; 从这个数组中,我想创建另一个数组,其中仅当每个子数组的第三个键的值大于3时才提取值 我这样想: if $array['2'] > 3){ $new_array[] = [$array['0'],$array['2'],$array['3']]; } 因此,最后我们将有以下新数组(注
$array = [
[A,a,1,i],
[B,b,2,ii],
[C,c,3,iii],
[D,d,4,iv],
[E,e,5,v]
];
从这个数组中,我想创建另一个数组,其中仅当每个子数组的第三个键的值大于3时才提取值
我这样想:
if $array['2'] > 3){
$new_array[] = [$array['0'],$array['2'],$array['3']];
}
因此,最后我们将有以下新数组(注意,子数组的第一个键在新数组中被消除):
一般来说,我认为应该用foreach制作,但由于我所描述的问题,我不知道如何才能做到这一点。以下是我尝试过的:
foreach($array as $value){
foreach($value as $k => $v){
if($k['2'] > 3){
$new_array[] = [$v['0'], $v['2'], $v['3']];
}
}
}
但是可能有一个PHP的本地函数可以处理它,不是吗
非常感谢你的帮助 建议您使用
array\u map()
&array\u filter()
。例如:
$array = [
['A','a',1,'i'],
['B','b',2,'ii'],
['C','c',3,'iii'],
['D','d',4,'iv'],
['E','e',5,'v']
];
$newArr = array_filter(array_map(function($v){
if($v[2] > 3) return [$v[0], $v[2], $v[3]];
}, $array));
print '<pre>';
print_r($newArr);
print '</pre>';
$array=[
[A',A',1,'i'],
[B',B',2,'ii'],
[C',C',3',iii'],
[D',D',4',iv'],
['E','E',5,'v']
];
$newArr=数组\过滤器(数组\映射(函数($v){
如果($v[2]>3)返回[$v[0],$v[2],$v[3];
}($array));
打印“”;
印刷费($newArr);
打印“”;
参考:
要进行筛选,请使用
array\u filter
,要提取值0、2、3
,请使用array\u map
$array = [
['A','a',1,'i'],
['B','b',2,'ii'],
['C','c',3,'iii'],
['D','d',4,'iv'],
['E','e',5,'v']
];
$newArr = array_filter(array_map(function($v){
if($v[2] > 3) return [$v[0], $v[2], $v[3]];
}, $array));
print '<pre>';
print_r($newArr);
print '</pre>';
$new_array = [];
foreach($array as $v) {
if($v[2] > 3) {
$new_array[] = [$v[0], $v[2], $v[3]];
}
}