2016-04-24 136 views
1

我有一个阵列(从MySQL)拆分多维阵列​​分成单个阵列:PHP

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

其用于显示的导航菜单&子菜单,

enter image description here

回答

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; 
} 
+0

解决了......你的答案工作.. –

+0

你能否请标记正确答案? –

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))