2011-05-23 148 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"; 
} 

>