2013-08-13 3 views
0

У меня есть массив объектов, и я хочу проверить, есть ли в нем определенное имя класса. Так что я пробовал:PHP array_filter с get_class filter

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

Только $ all_classnames еще держит исходный массив объектов вместо массива (через названия класса get_class). Я что-то упустил?

ответ

2

Вы хотите использовать array_map (который преобразует массив ввода, основанный на функции обратного вызова) вместо array_filter:

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

Обратите внимание, что array_map берет свои аргументы в обратном порядке, чем другие функции массива, которые используют обратный вызов, потому что PHP.

+0

Совершенная, небольшая ошибка мышления есть. Благодаря! Я установлю это как свой ответ, как только они позволят мне :) – Robbert

1

Это не то, как работает функция array_filter. Он просто фильтрует ваш массив, если обратный вызов возвращает false, он удалит элемент из массива.

Что вам нужно array_map

$all_classnames = array_map('get_class', $obj_array); 
Смежные вопросы