Как отфильтровать массив на основе поля в php? - PullRequest
2 голосов
/ 20 марта 2019

У меня есть php-код, как показано ниже:

$category = get_the_category(); // Строка #A
echo '<pre>'; print_r($category); echo '</pre>'; // Строка #B

Код во 2-й строке возвращает следующий массив:

Array
(
    [0] => WP_Term Object
        (
            [term_id] => 13085
            [name] => Cannabis
            [slug] => democracy_project_cannabis
            [term_group] => 0
            [term_taxonomy_id] => 13085
            [taxonomy] => category
            [description] => Hello World 
            [parent] => 13083
            [count] => 8
            [filter] => raw
            [cat_ID] => 13085
            [category_count] => 8
            [category_description] => Good Morning
            [cat_name] => Cannabis
            [category_nicename] => democracy_project_cannabis
            [category_parent] => 13083
        )

    [1] => WP_Term Object
        (
            [term_id] => 13093
            [name] => Today
            [slug] => today
            [term_group] => 0
            [term_taxonomy_id] => 13093
            [taxonomy] => category
            [description] => 
            [parent] => 0
            [count] => 3
            [filter] => raw
            [cat_ID] => 13093
            [category_count] => 3
            [category_description] => 
            [cat_name] => Today
            [category_nicename] => today
            [category_parent] => 0
        )

)

Постановка задачи:

Мне интересно, какой код PHP янужно кодировать так, чтобы он фильтровал массив на основе [name] => Today .Это должно занять только одно поле, которое [имя] => Сегодня

Я думаю, что мне нужно использовать метод array_filter(), но я не уверен, как я могу его использовать.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

С array_filter() и use вы получите больше гибкости при фильтрации многомерного массива по значениям

$filterBy = 'Today'; // any index value you want

$expected = array_filter($cats, function ($var) use ($filterBy) {
    return ($var->name == $filterBy);
});

print_r($expected);
0 голосов
/ 20 марта 2019

Определите анонимную функцию, которая возвращает true, если свойство name == 'Today' и false, в противном случае:

$result = array_filter($cats, function($v) { return $v->name == 'Today'; });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...