Поиск по многомерному массиву

152
06 сентября 2017, 15:33

Добрый день!

Есть простой сайт с новостями и категориями.

Допустим, пользователь захотел посмотреть все новости из категории world и перешел на страницу site.ru/category/world/

Как видно, в url страницы присутствует только название категории и нужно как-то получить её id, чтобы вывести все записи данной категории.

По идеи, достаточно сделать SELECT на поиск категории с названием wolrd и взять её id.

НО, лишний запрос делать не хочется, а т.к. вся информация о категориях у меня хранится в многомерном массиве, собственно возникает вопрос:

Как мне получить [id] из массива, где присутствует [url] => world ?

За место world, может быть любая другая категория, её название берется из $_GET['url_cat']

Array
(
    [1] => Array
        (
            [id] => 1
            [name] => Новости
            [url] => world
            [title] => Новости мира - Всё самое интересное!
            [description] => Описание категории новости!
            [keywords] => Ключевое слово, ключ, кей
        )
    [2] => Array
        (
            [id] => 2
            [name] => Политика
            [url] => politica
            [title] => Всё о политике
            [description] => Описание категории политика!
            [keywords] => Ключевое слово, ключ, кей
        )
)
Answer 1

Предположил, что массив категорий лежит в переменной $categories, и что ищем ID категории world:

$id = array_column($categories, 'id', 'url')['world'];
Answer 2

Как то так

function getID($AArray, $AURL) {
  foreach ($AArray as $item) {
    if (isset($item['url']) {
      // Достигли нужного уровня с данными
      if ($item['url'] === $AURL)
        return $item['id'];
    } else {
      // Иначе - вызываем себя рекурсивно для следующего уровня
      $res = getID($item, $AURL);
      // Если что-то нашли - выходим
      if (isset($res))
        return $res;
    }
  }
  // ничего не нашли
  return null;
}
Answer 3
foreach ($array as $a) {
    if ($a['url'] == $_GET['url_cat']) {
        echo $a['id'];
    }
}
READ ALSO
Оптимизация скорости работы БД

Оптимизация скорости работы БД

Всем привет, есть таблица translate на базе mysql с переводом в размере 700 тыс записей, делаю в цикле перевод каждое слово:

269
Загрузка картинки через ajax

Загрузка картинки через ajax

Друзья, после загрузки картинки на сервер, картинка не открываетсяТ

271
Поиск STYLE через HTML DOM parser

Поиск STYLE через HTML DOM parser

Вот сам кусок кода:

242
множественный UPDATE

множественный UPDATE

Как за один запрос обновить базу? Мой код почему то не работает (

250