2010-09-20 81 views
0

我在排序这个二维数组的基础上,例如(示例代码中的33) ,所以输出看起来像7,7,28,33, 35,38。这里是示例代码。排序二维数组排序的问题

在此先感谢

<?php 
$arr=array (0 => array (33 => 'SY2',), 1 => array (38 => 'PR25',), 2 => array (7 => 'SK22',), 3 => array (7 => 'BT1',), 4 => array (28 => 'WN8',), 5 => array (35 => 'ST21',)); 
print_r($arr); 
$arrnew=array(); 
$str=0; 
for($j=0;$j<count($arr);$j++){ 
foreach($arr[$j] as $key=>$val){ 
    if($str == 0) 
    $str=$arrnew[$key]; 
    if($str < $arrnew[$key]) 

    //$arrnew[$key]=$val; 
    //echo $key."<BR>"; 
} 
} 

print_r($arrnew); 
+0

可能重复http://stackoverflow.com/questions/3691355/most-effecient-way-to-order-an-array-by -sub元素) – 2010-09-20 14:38:23

回答

0
$arr=array (0 => array (33 => 'SY2',), 1 => array (38 => 'PR25',), 2 => array (7 => 'SK22',), 3 => array (7 => 'BT1',), 4 => array (28 => 'WN8',), 5 => array (35 => 'ST21',)); 
foreach($arr as $key => $val) 
{ 
foreach ($val as $key2 => $val2) 
{ 
    $sort[$key] = $key2; 
} 
} 
array_multisort($sort, SORT_ASC, $arr); 
print_r($arr); 
的[最effecient方式订购由子元件的阵列?](
0

如果每个子阵只有一个键值对,你可以从它创建一个新的数组:

// copy data from $arr to $newArray: 
$newArray = array(); 
foreach($arr as $v) 
    $newArray[array_keys($v)[0]] = $v[0]; 

// sort newArray: 
ksort($newArray) 

// if you want to, you can copy it back: 
$arr = array(); 
foreach($newArray as $k => $v) 
    array_push($arr, array($k, $v)); 

就是这样。请享用!