本帖最后由 daguaio_O 于 2009-08-21 17:26:35 编辑

解决方案 »

  1.   


    function processArr($arr,$index=array()) {
    $key = $index[0];
    $value = $index[1];
    $array = array();
    foreach($arr as $k=>$v) {
    $temp = array();
    foreach($v as $tk=>$tv){
    if($tk!=$key && $tk!=$value) {
    $temp[$tk] = $tv;
    }
    }
    $array[$v[$key]][$v[$value]] = $temp;
    }
    return $array;
    }
      

  2.   

    这个函数不行,只能处理$index为array(0=>...1=>...)的情况,变一个就不行了
      

  3.   

    我希望参数index可以为array('c1','c2','c3'.....),有很多个的时候依然能够处理
      

  4.   

    function processArr($arr,$index=array()) {
       $index = array_reverse($index);
    $return = array();
    foreach ($arr as $row) {
    $nodes = array();
    foreach ($index as $name) {
    $nodes[] = $row[$name];
    unset($row[$name]);
    }
    foreach ($nodes as $node) {
    $row = array($node=>$row);
    }
    $return += $row;

    }
    return $return;
    }