首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

请问版主xuzuning

2013-01-23 
请教版主xuzuning$ar array (array(level 1, caption 一级菜单1),array(level 1,

请教版主xuzuning


$ar = array (
  array("level" => '1', "caption" => "一级菜单1"),
  array("level" => '1', "caption" => "一级菜单2"),
  array("level" => '2', "caption" => "二级菜单1"),
  array("level" => '2', "caption" => "二级菜单2"),
  array("level" => '3', "caption" => "三级菜单1"),
  array("level" => '1', "caption" => "一级菜单3"),
);
print_r( foo($ar));

function foo(&$ar, $level='1') {
  $res = array();
  while($r = current($ar)) {
    if($r['level'] > $level) $res[count($res)-1]['sub'] = foo($ar, $r['level']);
    elseif($r['level'] == $level) $res[] = $r;
    else {
      array_unshift($ar, $r);
      break;
    }
    array_shift($ar);
  }
  return $res;
}


在上面的代码中while($r = current($ar)) 是如何为true的,有点搞不明白
[解决办法]
current($ar) 是取数组 $ar 的当前元素

只要不为空,就表示取到了。取到了当然就是 true 了

热点排行