array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

array_filter 锟矫回碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫的碉拷元

说锟斤拷

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

锟斤拷锟轿斤拷 array 锟斤拷锟斤拷锟叫碉拷每锟斤拷值锟斤拷锟捷碉拷 callback 锟斤拷锟斤拷锟斤拷锟斤拷锟� callback 锟斤拷锟斤拷锟斤拷锟斤拷 true锟斤拷锟斤拷 array 锟斤拷锟斤拷牡锟角爸碉拷岜伙拷锟斤拷锟斤拷诜锟斤拷氐慕锟斤拷锟斤拷锟斤拷锟叫★拷锟斤拷锟斤拷募锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷洹�

锟斤拷锟斤拷

array

要循锟斤拷锟斤拷锟斤拷锟斤拷

callback

使锟矫的回碉拷锟斤拷锟斤拷

锟斤拷锟矫伙拷锟斤拷峁� callback 锟斤拷锟斤拷锟斤拷 锟斤拷删锟斤拷 array 锟斤拷锟斤拷锟叫碉拷值为 FALSE 锟斤拷锟斤拷目锟斤拷锟斤拷锟斤拷锟斤拷息锟斤拷转锟斤拷为锟斤拷锟斤拷值锟斤拷

flag

锟斤拷锟斤拷callback锟斤拷锟秸的诧拷锟斤拷锟斤拷式:

  • ARRAY_FILTER_USE_KEY - callback锟斤拷锟杰硷拷锟斤拷锟斤拷为锟斤拷唯一锟斤拷锟斤拷
  • ARRAY_FILTER_USE_BOTH - callback同时锟斤拷锟杰硷拷锟斤拷锟酵硷拷值

锟斤拷锟斤拷值

锟斤拷锟截癸拷锟剿猴拷锟斤拷锟斤拷椤�

锟斤拷锟斤拷锟斤拷志

锟芥本 说锟斤拷
5.6.0 锟斤拷涌锟窖★拷牟锟斤拷锟� flag锟斤拷锟皆硷拷锟斤拷锟斤拷 ARRAY_FILTER_USE_KEY 锟斤拷 ARRAY_FILTER_USE_BOTH锟斤拷

锟斤拷锟斤拷

Example #1 array_filter() 锟斤拷锟斤拷

<?php
function odd($var)
{
    
// returns whether the input integer is odd
    
return($var 1);
}

function 
even($var)
{
    
// returns whether the input integer is even
    
return(!($var 1));
}

$array1 = array("a"=>1"b"=>2"c"=>3"d"=>4"e"=>5);
$array2 = array(6789101112);

echo 
"Odd :\n";
print_r(array_filter($array1"odd"));
echo 
"Even:\n";
print_r(array_filter($array2"even"));
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Example #2 锟斤拷使锟斤拷 callback 时锟斤拷array_filter()

<?php

$entry 
= array(
             
=> 'foo',
             
=> false,
             
=> -1,
             
=> null,
             
=> ''
          
);

print_r(array_filter($entry));
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Array
(
    [0] => foo
    [2] => -1
)

Example #3 锟斤拷 flag 锟斤拷堑锟� array_filter()

<?php

$arr 
= ['a' => 1'b' => 2'c' => 3'd' => 4];

var_dump(array_filter($arr, function($k) {
    return 
$k == 'b';
}, 
ARRAY_FILTER_USE_KEY));

var_dump(array_filter($arr, function($v$k) {
    return 
$k == 'b' || $v == 4;
}, 
ARRAY_FILTER_USE_BOTH));
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

注锟斤拷

Caution

锟矫伙拷锟斤拷应锟节回碉拷锟斤拷锟斤拷锟斤拷锟睫革拷锟斤拷锟介本锟斤拷锟斤拷锟斤拷锟斤拷锟接o拷删锟斤拷锟斤拷元锟斤拷锟竭讹拷 array_filter() 锟斤拷锟斤拷锟斤拷锟矫碉拷锟斤拷锟斤拷锟斤拷锟� unset锟斤拷锟斤拷锟斤拷锟斤拷锟侥憋拷锟剿o拷锟剿猴拷锟斤拷锟斤拷锟斤拷为锟斤拷锟斤拷锟斤拷预锟解。

锟轿硷拷

  • array_map() - 为锟斤拷锟斤拷锟矫匡拷锟皆拷锟接︼拷没氐锟斤拷锟斤拷锟�
  • array_reduce() - 锟矫回碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟截斤拷锟斤拷锟斤拷锟轿拷锟揭伙拷锟街�
  • array_walk() - 使锟斤拷锟矫伙拷锟皆讹拷锟藉函锟斤拷锟斤拷锟斤拷锟斤拷锟叫碉拷每锟斤拷元锟斤拷锟斤拷锟截碉拷锟斤拷锟斤拷