[PHP] 使用 array_filter() 過濾出陣列中指定的內容

分享:
標籤: PHP

要將某陣列內的內容依據指定條件過濾出來,可以透過 array_filter() 這個函式。

假設我們的 array 長這個樣子就能過濾出我們指定要的值的內容:

$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
var_dump(array_filter($arr, function($v) {
    return $v == 1
}));

 

而 array_filter() 也可以過濾指定陣列的 key,可以帶入第三個變數像這樣:

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

 

或是 key 跟 value 都一起判斷:

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

 

也可以透過這個來過濾比較複雜的關聯式陣列的內容,舉例來說我要過濾這樣的陣列:

$books=[
    [
        "id"=>1,
        "name"=>"javascript"
    ],
    [
        "id"=>2,
        "name"=>"PHP"
    ],
    [
        "id"=>3,
        "name"=>"CSS"
    ]
];

可以像這樣過濾:

$bookInfo=array_filter($books, function($book) {
    return $book["id"] == 1;
});

這樣就能取得特定陣列的內容了。