要將某陣列內的內容依據指定條件過濾出來,可以透過 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; });
這樣就能取得特定陣列的內容了。