array_walk、array_map、array_filter 的用法

array_walk、array_map、array_filter  和 foreach 都有循環對數組元素進行處理的功能。

 

一、array_walk 用法

 

1、循環數組,回調處理(並不修改數組元素的值,而是跳出去做其他的事情[回調的定義])

如:

$arr = [
    ['name' => 'A', 'age' => 18],
    ['name' => 'B', 'age' => 11],
];
 array_walk($arr, function ($value) {
     //做其他的邏輯處理,不對數組元素進行處理
     echo  "name:" . $value['name'] . ', age:' . $value['age'] . "\n";
 });

 

輸出的結果:

name:A, age:18
name:B, age:11

 

2、循環數組,對數據的元素進行處理

如:

$arr = [
    ['name' => 'A', 'age' => 18],
    ['name' => 'B', 'age' => 11],
];

//使用引用
 array_walk($arr, function (&$value) {
    //修改元素的 age  值
    $value['age'] = $value['age'] - 1;
    
 });

print_r($arr);

輸出結果:

Array
(
   [0] => Array
       (
           [name] => A
           [age] => 17
       )
   [1] => Array
       (
           [name] => B
           [age] => 10
       )
)

 

二、array_map 用法

array_map 的作用其實和array_walk 的引用差不多,就是循環數組,對數組元素的值進行處理;

 

三、array_filter 用回調函數過濾數組中的單元

通過 array_filter 處理過的數組,數字索引的數組會是不連續的,要通過 array_values()處理整理數組

 

 

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(6, 7, 8, 9, 10, 11, 12);

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章