2011-05-23 96 views
1

分拣我有这样的阵列,我想它的名字数组元素

Array 
(
    [id] => 12 
    [name] => Henry Davidson 
    [modified] => 2011-03-14 21:48:59 
    [modified_by] => James H 
) 

回答

1
$names = array(); 
foreach ($your_array as $key => $value) 
{ 
    $names[$key] = $value['name']; 
} 
array_multisort($names, SORT_ASC, $your_array); 
+0

很少的修改,得到了这个工作 – Autolycus 2011-05-23 20:44:37

+0

很高兴听到它的工作原理为你。你会发布你的修改为未来可能需要它的人的利益吗? – 2011-05-24 12:43:32

1

按姓氏排序排序。如果姓名多于或少于姓名,则可能需要进行一些更改。

function sort_by_name($a, $b) 
{ 
    $a = explode(' ', $a['name']); 
    $b = explode(' ', $b['name']); 
    if($a[1] == $b[1]) 
    { 
     return strcmp($a[0], $b[0]); 
    } 
    return strcmp($a[1], $b[1]); 
} 

usort($array, 'sort_by_name'); 
2

您可能想要使用uasort。 (http://www.php.net/manual/en/function.uasort.php)和你自己的回调函数,在你想排序的字段上进行排序。 ?通常的东西,如一个名字,你可以在uasort页面上使用http://php.net/manual/en/function.strcmp.php

直接从例如:

<?php 
function cmp($a, $b) 
{ 
    return strcmp($a["fruit"], $b["fruit"]); 
} 

$fruits[0]["fruit"] = "lemons"; 
$fruits[1]["fruit"] = "apples"; 
$fruits[2]["fruit"] = "grapes"; 

usort($fruits, "cmp"); 

while (list($key, $value) = each($fruits)) { 
    echo "\$fruits[$key]: " . $value["fruit"] . "\n"; 
} 

>