@T3R3AND

Как проверить и получить значение массива?

Здравствуйте! Допусти у меня есть такой массив:
$arr = [ 'сообщение|смс|sms' => 'sms', 'заказ|order' => 'order' ];


Тобиж что я хотел, у меня есть текст сообщение, как мне быстро и оптимизировано получить значение ключа?
У меня это в голове как-то так: implode и тд, но вот с ключом проблемы...
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
  1. Как уже сказали - ключ таким быть не должен. Либо это полный ключ и вы ищите по ключу, либо разбивайте его на несколько ключей с дублированием значений.
  2. Вы так же можете сделать тип или теги через запятую по которым это можно будет найти. Массив можно отфильтровать с помощью функции array_filter(), но лучше и правда это перенести в базу. Особенно, если таких значений будет много.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
delphinpro
@delphinpro Куратор тега PHP
frontend developer
// Есть ключ 
$key = 'сообщение';

// Имеем массив
$arr = [
  'сообщение' => 'sms',
  'смс'       => 'sms',
  'sms'       => 'sms',
  'заказ'     => 'order',
  'order'     => 'order',
];

// Моментально находим значение
$value = $arr[$key] ?? 'Неизвестно';
Ответ написан
Комментировать
function arraySearchSubkey(array $array, string $needle): array
{
    return array_filter(
        $array,
        function($key) use($needle) {
            return strpos($key, $needle) !== false;
        },
        ARRAY_FILTER_USE_KEY
    );
}


Или даже так:

function arraySearchSubkey(array $array, string $needle): array
{
    return array_filter($array, fn($key) => strpos($key, $needle) !== false, ARRAY_FILTER_USE_KEY);
}
Ответ написан
Комментировать
slashinin
@slashinin
Задачи для PHP https://justcoding.ru
Попробуй воспользоваться функцией array_keys() для получения списка ключей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы