Объект фильтра Php по ключу, который содержит строку

Я не знаком с PHP и столкнулся с проблемой фильтрации объекта массива.

У меня есть функция (get_post_meta_for_api), которая возвращает мне объект массива, но есть много свойств, которые мне не нужны...

Итак, я хотел бы отфильтровать свой объект по ключу, который содержит "seopress"

function get_post_meta_for_api( $object ) {
    $post_id = $object['id'];
 
    return get_post_meta( $post_id );
}

Заранее спасибо за вашу помощь :)

Отвечает ли это на ваш вопрос? PHP: Как использовать array_filter() для фильтрации ключей массива?

El_Vanja 22.12.2020 11:15

Спасибо за ваш ответ. Однако его можно использовать для фильтрации массива по ключу, а не по объекту.

Stev0 22.12.2020 11:17

Я немного потерялся сейчас. get_post_meta возвращает массив. Вы хотите сохранить элементы, у которых есть seopress в любом из ключей, или все элементы имеют эти ключи, но вы хотите исключить из объекта только другие клавиши, не относящиеся к seopress?

El_Vanja 22.12.2020 11:25

Я добавил ответ, который хочу отфильтровать, в свой пост. Я бы хотел оставить только ключ, который содержит «seopress» :)

Stev0 22.12.2020 11:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
199
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проверьте get_post_meta для получения дополнительной информации о том, как его использовать.

get_post_meta поставляется с возможностью получения одного мета-значения. Вот пример использования мета-значения, которое вы хотите получить.

get_post_meta($post_id, 'seopress', true);

Первый аргумент — это идентификатор сообщения, второй — мета-ключ, третий — если вам нужно одно значение. get_post_meta без true в третьем аргументе вернет массив, содержащий значение, с true вернет значение как есть.

Спасибо за ваш ответ, но я думаю, что это работает с точным соответствием. В моем случае мне нужен ключ, содержащий "seopress", и он не будет точно совпадать с ним.

Stev0 22.12.2020 11:23
Ответ принят как подходящий

Согласно документации, get_post_meta возвращает массив (https://developer.wordpress.org/reference/functions/get_post_meta/), это должно работать:

function get_post_meta_for_api( $object ) {

    return array_filter(
        get_post_meta($object['id']),
        function ($key) {
            return preg_match('/_seopress_*/', $key) === 1;
        },
        ARRAY_FILTER_USE_KEY
    );
}

Другие вопросы по теме