Проверка и объединение двух массивов

0

Что я делаю:

Я создаю навигационную панель. В этом я получаю значение из базы данных. В моей базе данных есть три столбца: page_name, main_page, sub_page.

Представлено следующим образом:

 ID   |   Page Name   |   Main Page   |   Sub Page   |
  1   |  Home         |   1           |   0          | 
  2   |  About        |   1           |   0          |
  3   |  Our Work     |   0           |   2          |
  4   |  Contact      |   1           |   0          |
  • Если это Main Page то ее main_page= 1 и sub_page= 0.
  • Если это Sub Page то ее main_page= 0 и In sub_page имеет id main_page.

Я получаю это значение из базы данных из этого запроса:

    $query = "SELECT * FROM subjects";
    $result = $this->db->query($query)->result_array();

И проверка моего результата, если это Main Page или Sub Page и добавление их в массив:

foreach($result as $row){
            if ($row['main_page'] == '1') {
                $main_page[] = $row['page_name'];//if main page the add them in array
            }else{
                $result1 = "";
                $query1  = "SELECT page_name FROM subjects WHERE id = '$row[sub_page]'";//getting name of main_page
                $result1 = $this->db->query($query1)->result_array();
                $main_page_name = $result1['0']['page_name'];
                $sub_page       = $row['page_name'];
                echo $main_page_name; echo "<br/>";
                $main_sub[] = array('main_page' => $main_page_name, 'sub_page' => $sub_page);//if sub page add main page name and sub page     
            }
 }

После этого он возвращает мне этот результат:

Array
(
    [0] => Home
    [1] => About
    [2] => Contact
)
Array
(
    [0] => Array
        (
            [main_page] => About
            [sub_page] => Our Work
        )
)


То, что я пытаюсь сделать:

Как я могу объединить эти два массива, чтобы получить такой массив:

Array
(
    [0] => Home
    [1] => About
         (
            [sub_page] => Our Work
         )
    [2] => Contact
)

Возможно ли получить такой результат из этих двух массивов или любым другим способом получить этот результат? скажите, пожалуйста, я застрял здесь.

  • 0
    Да, это возможно. В первом запросе выберите * и т.д ..., где подстраница = 0. Для каждого запуска элемента -> выберите * из mytable, где sub_page = thisid (thisid является текущим элементом), поэтому с помощью цикла вы можете сделать это.
Теги:
arrays

1 ответ

1
Лучший ответ

Я думаю, что вы хотите что-то вроде этого

Array(
    [0] => array(
       "title" => "Home"
    ),
    [1] => array(
       "title" => "About",
       "sub_page" => array(
          [0] => "Our Work"
       )
    ),
    [2] => array(
       "title" => "Contact"
    )
)

Вышеуказанный результат может быть достигнут путем выполнения этого

    $pageArray = array();
foreach($result as $row){
            if ($row['main_page'] == '1') {
                $pageArray[$row['id']]["title"] = $row['page_name'];
            }else if($row['sub_page']) {
                $pageArray[$row['sub_page']]["sub_page"][] = $row['page_name'];     
            }

 }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню