有人可以帮助我,因为我被困住了。
我有这个关联数组:
$items= [
[ 'name' => 'Waffles', 'type' => 'dog', 'age' => 10],
[ 'name' => 'Fluffy', 'type' => 'cat', 'age' => 14],
[ 'name' => 'Spelunky', 'type' => 'dog', 'age' => 4],
[ 'name' => 'Hank', 'type' => 'dog', 'age' => 11],
];
我想按年龄>使用array_filter()
过滤它10;
我已经创建了一个函数,将其与array_filter
:
function($currentAge){
return $currentAge > 10;
}
但我不知道如何只访问这个属性 - 'age'。 谢谢!
答案 0 :(得分:1)
$items = array_filter($items, function ($item) {
return $item['age'] > 10;
});
或者您可以将功能更改为
function filterByAge($current) {
return $current['age'] > 10;
}
答案 1 :(得分:1)
使用如下功能:
$items= [
[ 'name' => 'Waffles', 'type' => 'dog', 'age' => 10],
[ 'name' => 'Fluffy', 'type' => 'cat', 'age' => 14],
[ 'name' => 'Spelunky', 'type' => 'dog', 'age' => 4],
[ 'name' => 'Hank', 'type' => 'dog', 'age' => 11],
];
$age_filter = (array_filter($items, "get_age"));
function get_age($array_item) {
return $array_item['age'] > 10;
}
print_r($age_filter);
答案 2 :(得分:0)
松散地说,你可以做类似的事情:
$items= [
[ 'name' => 'Waffles', 'type' => 'dog', 'age' => 10],
[ 'name' => 'Fluffy', 'type' => 'cat', 'age' => 14],
[ 'name' => 'Spelunky', 'type' => 'dog', 'age' => 4],
[ 'name' => 'Hank', 'type' => 'dog', 'age' => 11],
];
$filtered = array_filter($items, function ($item) {
return $item["age"] > 10;
});
但是如果你想要更通用的东西,你可以这样做:
function array_where($array, $column, $function) {
$indices = array_keys(array_filter(array_column($array,$column),$function));
return array_intersect_key($array,$indices);
}
然后做:
array_where($items,"age",function ($age) {
return $age > 10;
})
示例:http://sandbox.onlinephpfunctions.com/code/6c9ff65d517323905c0430bef837a7e13944ca71