2014-06-12 107 views
-2

如下我有一个数组:数组排序按姓名的PHP

Array (
[id] => Array 
    (
     [0] => 3321 
     [1] => 3318 
     [2] => 3320 
     [3] => 3319 
     [4] => 3324 
     [5] => 3322 
    ) 

[name] => Array 
    (
     [0] => Carla Taku 
     [1] => Honey-Pearl Te Moni 
     [2] => Monique Koroua 
     [3] => Summer Hellier 
     [4] => Wayne Kahukiwa 
     [5] => Natasha Merito 
    ) 

[courses] => Array 
    (
     [0] => 2 
     [1] => 1 
     [2] => 1 
     [3] => 1 
     [4] => 1 
     [5] => 1 
    ) 

) 

我想通过“名称”进行排序,但我不能工作了如何做到这一点?由于其他代码,我无法使其成为多维的。我试过usort,ksort,array_sort,array_multisort,但我没有足够的经验来排序。任何人有任何建议?请温柔,我是新手。谢谢。 :)

+0

你的意思是排序所有三个基于排序一列或按姓氏排序? – Anthony

+0

@Anthony如果可能,我想根据“名称”列对所有3个进行排序 – dpDesignz

+0

您的意思是根据ID,名称,课程等关键字对此进行排序。请提供详细信息如何排序,这将有助于 –

回答

4

我觉得array_multisort是你所追求的:

array_multisort($array['name'], $array['id'], $array['courses']); 
+0

你我的朋友是一个传奇!谢谢!我无法弄清楚它应该如何订购。 :) – dpDesignz

+0

好而简单,而不是我的多行下面,你每天都会学到新的东西。 – Charles

1

昨天刚刚遇到分拣东西。希望这可以给你一些提示。

function SortByName($a,$b){ 
    return strcasecmp($a['name'], $b['name']); 
} 

usort($YourArray, 'SortByName'); 
+0

我已经试过这个,但我不断收到错误'未定义的索引:名称?但是如果我在函数改变后回显数组? – dpDesignz

0

对不起,不使用特定的阵列,因为我懒,哈哈。然而,这应该适合你,就像馅饼一样容易。

$ar = array(
    array("10", 11, 100, 100, "a"), 
    array(1, 2, "2", 3, 1) 
); 

$temp = $ar[1]; 

$count = 0; 

asort($ar[0]); 
foreach ($ar[0] as $key => $value) { 
    $ar[1][$count] = $temp[$key]; 
    $count++; 
} 

print_r($ar);