Php 是否有更干净的方法按键过滤';s值多少? $a=数组( 0=>数组('1'=>1,'2'=>2), 1=>数组('1'=>3,'2'=>4), 2=>数组('1'=>5,'2'=>2) ); $c=计数($a); $r=数组(); 对于($i=0;$i

Php 是否有更干净的方法按键过滤';s值多少? $a=数组( 0=>数组('1'=>1,'2'=>2), 1=>数组('1'=>3,'2'=>4), 2=>数组('1'=>5,'2'=>2) ); $c=计数($a); $r=数组(); 对于($i=0;$i,php,arrays,filter,Php,Arrays,Filter,那么,有没有更干净的方法来完成上述所有工作?您是否尝试过使用 上述代码的输出与原始代码略有不同: $r = array_filter($a, function($var) { return ($var['two'] === 2); }); 如果需要折叠键,可以使用或来执行array\u filter(),您可以编写一个函数来执行此操作,然后使用或,仅此而已 我唯一能看到的清理方法是更改原始数据结构。我肯定会这样做。需要注意的是,array\u filter会保存原始数组中的键。+1这是最好

那么,有没有更干净的方法来完成上述所有工作?

您是否尝试过使用

上述代码的输出与原始代码略有不同:

$r = array_filter($a, function($var) {
  return ($var['two'] === 2);
});

如果需要折叠键,可以使用或来执行
array\u filter()
,您可以编写一个函数来执行此操作,然后使用或,仅此而已


我唯一能看到的清理方法是更改原始数据结构。

我肯定会这样做。需要注意的是,
array\u filter
会保存原始数组中的键。+1这是最好的答案。对于早于5.3的PHP,匿名函数应替换为call。对于使用旧PHP版本的用户,请注意。
$r = array_filter($a, function($var) {
  return ($var['two'] === 2);
});
Yours:
array(
  0 => array('one' => 1, 'two' => 2),
  1 => array('one' => 5, 'two' => 2)
)

Using array_filter:
array(
  0 => array('one' => 1, 'two' => 2),
  2 => array('one' => 5, 'two' => 2)    // Note the key is 2, not 1
)