将多维数组拆分为单个数组:PHP

时间:2016-04-24 09:05:37

标签: php mysql arrays

我有一个数组(来自mysql),

Array ( 
    [0] => Array ( 
        [heading] => Page Name change 
        [name] => Page_Name_change 
        [menu] => online 
    ) 
    [1] => Array ( 
        [heading] => Lorem ipsum dolor 
        [name] => Lorem_ipsum_dolor_ 
        [menu] => akshaya 
    ) 
    [2] => Array ( 
        [heading] => fgdfgfdgdfgdf 
        [name] => fgdfgfdgdfgdf 
        [menu] => akshaya 
    ) 
)

我需要将它拆分为单独的数组,基于[menu],检查这个php

function getpage() {
    $query = "SELECT heading,name,menu FROM pages";
    $res = $this->_conn->query($query);
    while ($row = mysqli_fetch_assoc($res)) {
        $result[] = $row;
    }
    for ($i=0; $i < count($result); $i++) {
        if (strcmp($result[$i]['menu'],'akshaya') == 0) {
            for ($j=0; $j < count($result[$i]) ; $j++)
                $menu = $result[$i][$j];
        }
    }
    //if(strcmp($row['menu'],'akshaya')==0) { }
    return $menu;
}

预期的结果是每个菜单段都包含初始数组中元素列表的数组,如下所示:

[
    'online' => [
        [
            'heading' => '...',
            'name' => '...',
        ],
    ],
    'akshaya' => [
        [...], 
        [...],
    ],
]

MySql Data base

用于显示导航菜单&amp;子菜单中,

enter image description here

2 个答案:

答案 0 :(得分:1)

function getpage() {
    $query = "SELECT heading,name,menu FROM pages";
    $res = $this->_conn->query($query);
    while ($row = mysqli_fetch_assoc($res)) {
        $result[] = $row;
    }

    $menu = [];
    foreach ($result as $menuItem) {
        $menu[$menuItem['menu']][] = $menuItem;
    }

    return $menu;
}

答案 1 :(得分:0)

function getpage() {
    $query = "SELECT heading,name,menu FROM pages";
    $res = $this->_conn->query($query);
    while ($row = mysqli_fetch_assoc($res)) {
        $result[] = $row;
    }

    $menu = [];
    foreach ($result as $menuItem) {
        $menu[$menuItem['menu']][] = $menuItem;
    }

    return $menu;
}



<?php
$nav=new Pages();
$res=$nav->getpage();
//print_r($res);
echo "<br>";
foreach ($res as $r){
   // print_r($r);
    echo "<br>";
    foreach($r as $rc){

         if (strcmp($rc['menu'],'akshaya') == 0) {
             $akshaya[]=$rc;
    }
    echo "<br>";
}
}
   print_r($akshaya); 
echo count($res);

?>
  

输出:

Array ( [0] => Array ( [heading] => Lorem ipsum dolor [name] => Lorem_ipsum_dolor_ [menu] => akshaya ) [1] => Array ( [heading] => fgdfgfdgdfgdf [name] => fgdfgfdgdfgdf [menu] => akshaya ) )