带有get_class过滤器的PHP array_filter

时间:2013-08-13 09:00:07

标签: php

我有一个对象数组,我想检查某个类名是否在其中。所以我试过了:

$all_classnames = array_filter($obj_array, 'get_class');
$found = in_array("classname_to_test", $all_classnames);

只有,$ all_classnames仍然保存原始对象数组而不是类名数组(通过get_class)。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您想使用array_map(根据回调函数转换输入数组)而不是array_filter

$all_classnames = array_map('get_class', $obj_array);

请注意,array_map的参数顺序与使用回调的其他数组函数的顺序相反,因为PHP。

答案 1 :(得分:1)

这不是array_filter函数的工作原理。它只是过滤你的数组,如果回调返回false它将从数组中删除元素。

您需要的是array_map

$all_classnames = array_map('get_class', $obj_array);