2012-03-13 17 views
0
array("name" => "", 
     "uid" => "", 
     "nid" => "", 
     "vid" => ""); 

に基づいて、私はそれは次のように並べ替えが必要です。ソートこの配列はカスタム条件

array("nid" => "", 
     "uid" => "", 
     "vid" => "", 
     "name" => ""); 

しかし、私はarray_mapをを把握することができないよう、uksort()...または任意の他のもの。おかげ

+1

基準を何を_is_:

は、あなたがそのキーで昇順にアルファベット順に配列をソートしたいが、後で追加のキーを追加しても、最後のキーは、これは動作するはずの「name」を持っていることを考えると? –

答えて

2

ないような並べ替えができますが、唯一の4つのキーを見ているのならば、なぜない:

$newArray = array("nid" => $array["nid"], "uid" => $array["uid"], "vid" => $array["vid"], "name" => $array["name"]); 
+0

これは、場合によっては最初の配列にすべてのキーがなく、キーが存在する必要があります(値がnullの場合でも)。 –

0

あなたはuksort()を使用することができます。

function myksort($a, $b) { 
    $korder = array('nid', 'uid', 'vid', 'name'); 
    return (array_search($a, $korder) < array_search($b, $korder)) : -1 ? 1; 
} 

uksort($array, 'myksort'); 
1

uksortのfunction referenceを確認しましたか?

<?php 

class MySortHelper 
{ 
    function sort_my_array($a, $b) 
    { 
     if ($a == $b) return 0; 

     if ($a == 'name') return 1; 
     if ($b == 'name') return -1; 

     return ($a > $b) ? 1 : -1; 
    } 
} 

// ... 

$my_sort_helper = new MySortHelper(); 
uksort($my_array, array($my_sort_helper, 'sort_my_array'));