Задать вопрос
@li0ard
JS Dev

Фильтрация по строковому значению?

Приветствую. Условно есть массив с описанием значений от "старшего" к "младшему"
["group.phantom", "group.god", "group.imperator", "group.general", "group.hermit", "group.soldier"]
, а также входные данные:
[
   [
      "permission" => "group.default" 
   ], 
   [
      "permission" => "group.phantom" 
   ], 
   [
      "permission" => "group.general" 
   ] 
]


Так вот, как получить "старшее" значение permission из входных данных?
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 3 комментария
Ответ пользователя Ипатьев К ответам на вопрос (3)
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Ну и просто для комплекта, решение с использованием функций для работы с массивами
$permission = array_values(array_intersect($a, array_column($b, 'permission')))[0] ?? null;

array_column() сделает из $b нормальный массив, без этих бессмысленных "permission"
array_intersect собственно вернет пересечение двух массивов, все значения из $a, которые есть в $b.
теперь нам нужно самое первое значение из этого массива. Один из вариантов - это array_values()[0]
если нет совпадений, то при обращении к нулевому элементу будет ошибка, для её подавления используем сокращенный оператор проверки на существование, и присваиваем значение null
Ответ написан
Комментировать