$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);
foreach($rows as $row) {
.. и обходим массив по ключу 'category_id' выбирая (1, 2, 7)
}
Города (id = 1):
- город Москва
Сёла (id = 2):
- село Огонёво
- село Быстрино
Посёлки (id = 7):
- посёлок Восточный
foreach($rows_sql as $row) {
$catkey = $row['category_id'];
if( isset($datapost[$catkey]) )
// if( isset( array_column($datapost,'header', 'category_id' ) ) )
{
// echo '$catkey = '.$catkey;
echo '<li><p class="href">'.$row['title'].'</p>';
echo '<ul class="sub-menu">';
foreach( $datapost as $val ) {
if( $val['category_id'] == $row['category_id']) {
echo '
<li><a href="'.$val['post_url'].'">'.$val['header'].'</a></li>
';}
}
echo '</ul>';
echo ' </li>';
}
else {
echo '<li><p class="href">'.$row['title'].'</p></li>';
}
}
// $first_names = array_column($datapost,'header', 'category_id' );
// echo "<pre>";
// print_r($first_names);
// echo "</pre>";
<?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);
<?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`, `title` FROM `category` ");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC);
$arIDs = [];
foreach($rows as $row) {
$arIDs[$row['id']] = $row['title'];
}
$arResults = [];
foreach($datapost as $data) {
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
}
print_r($arResults);
Array
(
[1] => Array
(
[0] => Array
(
[header] => город Москва
[category_id] => 1
)
)
[2] => Array
(
[0] => Array
(
[header] => село Огонёво
[category_id] => 2
)
[1] => Array
(
[header] => село Быстрино
[category_id] => 2
)
)
[7] => Array
(
[0] => Array
(
[header] => посёлок Восточный
[category_id] => 7
)
)
)
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
foreach($datapost as $data) {
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
else {
$arResults[ .... ]['title'] = $arIDs[ .... ];
}
}
foreach($arIDs as $key => $val) {
echo "<li>".$key." => ".$val."</li>";
foreach($arResults as $keyRes => $result) {
if ($key == $keyRes) {
foreach($result['items'] as $item) {
echo '<li>--'.$item['header'].'</li>';
}
}
}
}
`id` `title`
1 Города
2 Сёла
7 Посёлки
10 Природа
$query = mysqli_query($connect, "SELECT `id`, `title` FROM `category` ");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC);
$datapost = array(
array(
'header' => 'город Москва',
'category_id' => '1',
),
array(
'header' => 'село Огонёво',
'category_id' => '2',
),
array(
'header' => 'село Быстрино',
'category_id' => '2',
),
array(
'header' => 'посёлок Восточный',
'category_id' => '7',
),
);
Города
- город Москва
Сёла
- село Огонёво
- село Быстрино
Посёлки
- посёлок Восточный
Природа
- (без подпунктов, потому что в массиве по id = 10 ничего нет)
foreach($rows as $row) {
$arIDs[$row['id']] = $row['title'];
}
$arResults = [];
foreach($datapost as $data) {
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
}
foreach($arResults as $result) {
$result['title'] // Название категории
foreach($result['items'] as $item) {
$item['header'] // Название подменю
}
}
Города
- город Москва
Сёла
- село Огонёво
- село Быстрино
Посёлки
- посёлок Восточный
foreach($arIDs as $key => $val) {
echo '<li>'.$val.'</li>'; //выводим все категории, что есть в БД
foreach($arResults as $keyRes => $result) {
if ($key == $keyRes) { // проверяем совпадение ключей и выводим подменю, где есть
foreach($result['items'] as $item) {
echo '<li>'.$item['header'].'</li>';
}
}
}
}
<?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`, `title` FROM `category` ORDER BY `title`");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC);
$arIDs = [];
foreach($rows as $row) {
$arIDs[$row['id']] = $row['title'];
}
$arResults = [];
foreach($datapost as $data) {
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
}
$RESULT = [];
foreach($arIDs as $id => $title) {
if(array_key_exists($id, $arResults))
$RESULT[$id] = $arResults[$id];
else
$RESULT[$id] = [
'title' => $title,
'items' => [],
];
}
//print_r($RESULT);
foreach($RESULT as $result) {
$result['title'] // Название категории
foreach($result['items'] as $item) {
$item['header'] // Название подменю
}
}
$cat_id = $row['id'];
$arCATEGORY = [];
foreach($RESULT as $val) {
if(array_key_exists($cat_id, $RESULT ))
$arCATEGORY[$cat_id] = $RESULT[$cat_id];
}
$query = mysqli_query($connect, "SELECT `id`, `title` FROM `category` ORDER BY `title`");
$rows = mysqli_fetch_all($query, MYSQLI_ASSOC);
$arIDs = [];
foreach($rows as $row) {
$arIDs[$row['id']] = $row['title'];
}
$arResults = [];
foreach($datapost as $data) {
if(array_key_exists($data['category_id'], $arIDs)) {
$arResults[$data['category_id']]['title'] = $arIDs[$data['category_id']];
$arResults[$data['category_id']]['items'][] = $data;
}
}
foreach($rows as $row) {
echo '<li>Категория<b> ' .$row['title'].'</b></li>'; //берём тайтл категории прям из БД
$idCat = $row['id']; // так же из БД получаем айдишник категории
if ( isset($arResults[$idCat]) ) { // а потом просто проверяем наличие массива по этому $row['id']
foreach($arResults[$idCat]['items'] as $key => $vol) {
echo '<li>*подменю: ' .$vol['header'].'</li>';
}
}
}