Как получить все значения из вложенных массивов по ключу?

Доброго времени суток!
Прошу помощи у знающих людей.

Имеется вот такой массив:
$datapost = array(
	array(
		'header' => 'город Москва',	
		'category_id' => '1',
	),
	array(
		'header' => 'село Огонёво',	
		'category_id' => '2',
	),
	array(
		'header' => 'село Быстрино',	
		'category_id' => '2',
	),
	array(
		'header' => 'посёлок Восточный',	
		'category_id' => '7',
	),

Необходимо преобразовать его список.
То есть как бы из базы получаем значение `id` (1, 2, 7)...
$query = mysqli_query($connect, "SELECT `id` FROM `category` ");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC); 
	foreach($rows as $row) {
.. и обходим массив по ключу 'category_id' выбирая (1, 2, 7)
	}

В итоге должно получиться
Города (id = 1):
	- город Москва
Сёла (id = 2):
	- село Огонёво
	- село Быстрино
Посёлки (id = 7):
	- посёлок Восточный

Помогите, плииз, всю голову сломал! Вот вроде элементарно же выборку по массиву сделать, а никак... Упёрся в foreach, навертел их столько, что аж самому страшно.
  • Вопрос задан
  • 692 просмотра
Решения вопроса 1
Fernus
@Fernus
Техник - Механик :)
<?php

$datapost = array(
  array(
    'header' => 'город Москва',	
    'category_id' => '1',
  ),
  array(
    'header' => 'село Огонёво',	
    'category_id' => '2',
  ),
  array(
    'header' => 'село Быстрино',	
    'category_id' => '2',
  ),
  array(
    'header' => 'посёлок Восточный',	
    'category_id' => '7',
  ),
);

$query = mysqli_query($connect, "SELECT `id` FROM `category` ");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC);

$arIDs = [];

foreach($rows as $row) {
    $arIDs[$row['id']] = $row['id'];
}

$arResults = [];

foreach($datapost as $data) {

    if(array_key_exists($data['category_id'], $arIDs))
        $arResults[$data['category_id']][] = $data;

}

print_r($arResults);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы