2015-04-07 3 views
0
$arr['a']['studentname'] = "john"; 

$arr['b']['studentname'] = "stefen"; 

$arr['c']['studentname'] = "alex"; 

это можно сортировать с помощью пользовательских функций:Как отсортировать массив на основе значения

usort($arr) 


uasort($arr) 


uksort($arr) 

так на основе значения, которое мне нужно пройти, массив должен быть отсортирован! ожидается выход:

если текущее значение затем

Array 
(
    [c] => Array 
     (
      [studentname] => alex 

     ) 

    [a] => Array 
     (
      [studentname] => john 

     ) 

    [b] => Array 
     (
      [studentname] => stefen 

     ) 

) 

если текущее значение затем

Array 
    (

[b] => Array 
      (
       [studentname] => stefen 

      ) 
[a] => Array 
      (
       [studentname] => john 

      ) 
     [c] => Array 
      (
       [studentname] => alex 

      ) 

    ) 

заранее спасибо

+0

Вы можете редактировать с другими, например, я могу получить что вы собираетесь делать –

+0

john вы можете показать свой код? –

ответ

1

Если я понял вопрос, вы можете использовать простую строку com Паре обратного вызова:

$arr['a']['studentname'] = "john"; 
$arr['b']['studentname'] = "stefen"; 
$arr['c']['studentname'] = "alex"; 

// A-Z 
uasort($arr, function($a, $b) { 
    return strcmp($a['studentname'], $b['studentname']); 
}); 

print_r($arr); 

// Z-A 
uasort($arr, function($a, $b) { 
    return strcmp($b['studentname'], $a['studentname']); 
}); 

print_r($arr); 
0

Попробуйте это:
Для PHP версии> 5.3:

$arr['a']['studentname'] = "john"; 
$arr['b']['studentname'] = "stefen"; 
$arr['c']['studentname'] = "alex"; 

uasort($arr, function($a, $b) { 
    return strcmp($a['studentname'], $b['studentname']); 
}); 

Для PHP версии < 5,3:

$arr['a']['studentname'] = "john"; 
$arr['b']['studentname'] = "stefen"; 
$arr['c']['studentname'] = "alex"; 

function sort_by($a, $b) { 
    return strcmp($a['studentname'], $b['studentname']); 
} 

uasort($arr, 'sort_by');