$a = array(
0 => array( 'one' => 1, 'two' => 2 ),
1 => array( 'one' => 3, 'two' => 4 ),
2 => array( 'one' => 5, 'two' => 2 )
);
$c = count( $a );
$r = array();
for ( $i = 0; $i < $c; $i++ )
{
if ( $a[$i]['two'] == 2 )
$r[] = $a[$i];
}
是否有更清洁的方法来完成上述所有工作?
答案 0 :(得分:7)
您是否尝试过使用array_filter()
?
$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
)
如果您需要折叠密钥,可以使用array_values()
或array_multisort()
array_filter()
答案 1 :(得分:1)
您可以编写一个函数来执行此操作,然后使用array_walk或array_filter,但这就是它。
我唯一可以看到清理它的方法就是更改原始数据结构。