http://www.oschina.net/question/167679_56466 类似这种效果,要怎么实现,还是有更好的方法

解决方案 »

  1.   

    $a = Array(
      '0' => Array('id' => 3,'sid' => 0),
      '1' => Array('id' => 4,'sid' => 0),
      '2' => Array('id' => 5,'sid' => 3),
      '3' => Array('id' => 6,'sid' => 0),
      '4' => Array('id' => 7,'sid' => 4),
      '5' => Array('id' => 8,'sid' => 0),
    );function cmsort($ar, $sid=0, &$res=array()) {
      foreach($ar as $r) {
        if($r['sid'] == $sid) {
          $res[] = $r;
          cmsort($ar, $r['id'], $res);
        }
      }
      return $res;
    }var_export(cmsort($a));array (
      0 => array ( 'id' => 3, 'sid' => 0, ),
      1 => array ( 'id' => 5, 'sid' => 3, ),
      2 => array ( 'id' => 4, 'sid' => 0, ),
      3 => array ( 'id' => 7, 'sid' => 4, ),
      4 => array ( 'id' => 6, 'sid' => 0, ),
      5 => array ( 'id' => 8, 'sid' => 0, ),
    )
    声明 $res 为全局,而不是传递也是一样的
    但我认为这样外联太强了