du8794 2013-03-31 01:27
浏览 38
已采纳

从现有数组创建另一个多维数组并对多维数组进行排序[关闭]

i have question about php arrays. i have array like $data.

$data=array(array('a'=>'1','b'=>'2','c'=>'3','d'=>'4'),array('a'=>'5','b'=>'6','c'=>'7','d'=>'8'),array('a'=>'9','b'=>'10','c'=>'11','d'=>'12'));

i want to get only a,c,d element and create another multi dimensional array like $data1.

$data1=array(
        array('a'=>'1','c'=>'3','d'=>'4'),
            array('a'=>'5','c'=>'7','d'=>'8'),
            array('a'=>'9','c'=>'11','d'=>'12')         
        );

as a next step i wanted to sort $data1 array by first value of d elements then by value of c elements and finally by a elements and get array like $data2.

$data2=array(           
            array('a'=>'9','c'=>'11','d'=>'12')
            array('a'=>'5','c'=>'7','d'=>'8'),
            array('a'=>'1','c'=>'3','d'=>'4')
            );

i need little bit explained answer to each step. i'm stuck in here this problem. i want help.. and are there any php array function available for get $data1 array from $data easily?

  • 写回答

1条回答 默认 最新

  • donglu4633 2013-03-31 02:22
    关注

    This will work in your case..

    $data=array(array('a'=>'1','b'=>'2','c'=>'3','d'=>'4'),array('a'=>'5','b'=>'6','c'=>'7','d'=>'8'),array('a'=>'9','b'=>'10','c'=>'11','d'=>'12'));
    $data1 = array();
    
    //getting data1 by removing the b's 
    
    foreach($data as $d){
       while(list($k,$v) = each($d)){
        if($k == "b"){
            unset($d[$k]);
        }
    }
    array_push($data1, $d);
    }
    
    //Sorting the arrays
    foreach($data1 as $key => $value){
      $ds[$key] = $value["d"];
      $cs[$key] = $value["c"];
      $as[$key] = $value["a"];
    }
    
    array_multisort($ds, SORT_DESC, $cs, SORT_DESC, $as, SORT_DESC, $data1);
    print_r($data1);
    

    This will print:

    Array
    (
    [0] => Array
        (
            [a] => 9
            [c] => 11
            [d] => 12
        )
    
    [1] => Array
        (
            [a] => 5
            [c] => 7
            [d] => 8
        )
    
    [2] => Array
        (
            [a] => 1
            [c] => 3
            [d] => 4
        )
    

    )

    Dins

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算