PHP 与 array_filter 相对?

FNM*_*N82 2 php arrays functional-programming

我熟悉array_filter,我试图考虑更多功能,但我想知道是否有办法保留丢弃的值?例如,如果我有一个像这样的数组:

<?php  
  $arr = array( 1, 2, 3, 4 );
  $arrGreaterThanTwo = array_filter($arr, function($item){
   return $item > 2;
 });
Run Code Online (Sandbox Code Playgroud)

结果将是: array( 3, 4 )。

  1. 有没有办法保留丢弃的值数组( 1, 2 )?
  2. 或者我是否需要在原始数组上再次重用 array_filter 并将 item <= 返回到 2?
  3. 如果我再次使用 array_filter 来获取 array( 1, 2 ),那么循环遍历原始数组两次会不会效率低下?

最后,我只是想用 array_filter 循环一次,并将丢弃的值也保存到一个单独的数组中。

提前致谢!

Obj*_*tor 5

如果您想获得除过滤后的其他数组值,请使用array_diff()

array_diff — 计算数组的差异

$arrRemaining = array_diff($arr, $arrGreaterThanTwo);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
  [0] => 1
  [1] => 2
)
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个答案,因为它简单、干净且易于理解。但是,如果我错了,请纠正我……这是循环了两次。我将解决我自己的问题,看看其他开发人员的想法。非常感谢您的回答。 (2认同)