2011-12-21 93 views
2

可能重复:
How do I sort a multidimensional array in php排序数组值

我有值数组,并希望基于字母顺序值进行排序

我目前的阵列

$original_array = array(
     array('id' => 123456, 'name'=>michael), 
     array('id' => 222222, 'name'=>harolds), 
     array('id' => 1111111, 'name'=>albert) 
    ); 

所以我期待的结果后排序数组如下图所示

$original_array = array( 
     array('id' => 1111111, 'name' => albert), 
     array('id' => 222222, 'name' => harolds), 
     array('id' => 123456, 'name' => michael) 
    ); 

回答

5

这是usort()用于型的事:

$original_array = array(array('id'=>123456,'name'=>'michael'),array('id'=>222222,'name'=>'harold'),array('id'=>1111111,'name'=>'albert')); 

function alphasort($a, $b) { 
    if ($a['name'] == $b['name']) { 
     return 0; 
    } 
    return ($a['name'] < $b['name']) ? -1 : 1; 
} 

usort ($original_array,'alphasort'); 
var_dump($original_array); 
+0

Woww感谢对于超级快速回复队友...其实我已经在第一个地方玩过usort但是没有在第二个参数中传递任何函数在usort方法中...我的坏...反正谢谢队友 – user637852 2011-12-21 10:15:02

+0

@ user637852 - 你应该接受这个答案来信任他。 :) – 2011-12-21 10:21:54

0

你可以试试下面的方法。

$original_array = array(
array('id'=>123456,'name'=>'michael'), 
array('id'=>222222,'name'=>'harolds'), 
array('id'=>1111111,'name'=>'albert') 
); 

foreach ($original_array as $key => $row) { 
    $volume[$key] = $row['id']; 
    $edition[$key] = $row['name']; 
} 



array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $original_array); 

Prasad。

0

这是非常容易,只要像这样做:

$array = array(
    array('id' => 123456, 'name' => michael), 
    array('id' => 222222, 'name' => harolds), 
    array('id' => 1111111, 'name' => albert) 
); 

usort($array, function($a, $b) { 
    return strcmp($a['name'], $b['name']); 
}); 

,你会得到你需要的东西!如果你的PHP版本5.2.x或更小,做了这种方式:

$array = array(
    array('id' => 123456, 'name' => michael), 
    array('id' => 222222, 'name' => harolds), 
    array('id' => 1111111, 'name' => albert) 
); 

function mysort_func_531994($a, $b) { 
    return strcmp($a['name'], $b['name']); 
} 

usort($array, 'mysort_func_531994'); 

阅读说明书的以下功能:

  1. usort功能
  2. strcmp功能