【问题标题】:create another muti dimentional array from exsisting array and sort a muti dimentional array [closed]从现有数组创建另一个多维数组并对多维数组进行排序[关闭]
【发布时间】:2013-03-21 11:05:17
【问题描述】:

我对 php 数组有疑问。我有像 $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'));

我只想获取 a,c,d 元素并创建另一个多维数组,例如 $data1。

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

下一步我想按 d 元素的第一个值排序 $data1 数组,然后按 c 元素的值排序,最后按 a 元素排序,得到像 $data2 这样的数组。

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

我需要对每个步骤进行一点解释。我被困在这里这个问题。我想要帮助.. 是否有任何 php 数组函数可用于从 $data 轻松获取 $data1 数组?

【问题讨论】:

标签: php function sorting multidimensional-array


【解决方案1】:

这将适用于你的情况..

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

这将打印:

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
    )

)

丁丁

【讨论】:

  • 您的回答非常有帮助且清晰。谢谢。我也很欣赏其他的答案和回应......也......
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2012-12-17
相关资源
最近更新 更多