이 객체 배열을 필드 중 하나 name또는로 정렬하려면 어떻게 count해야합니까?
  Array
(
    [0] => stdClass Object
        (
            [ID] => 1
            [name] => Mary Jane
            [count] => 420
        )
    [1] => stdClass Object
        (
            [ID] => 2
            [name] => Johnny
            [count] => 234
        )
    [2] => stdClass Object
        (
            [ID] => 3
            [name] => Kathy
            [count] => 4354
        )
   ....
답변
usort 사용하십시오 . 다음은 매뉴얼에서 수정 된 예입니다.
function cmp($a, $b) {
    return strcmp($a->name, $b->name);
}
usort($your_data, "cmp");
두 번째 인수로 모든 호출 가능 항목 을 사용할 수도 있습니다 . 여기 몇 가지 예가 있어요.
- 
익명 함수 사용하기 (PHP 5.3부터)
usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);}); - 
수업 내에서
usort($your_data, array($this, "cmp")); // "cmp" should be a method in the class - 
화살표 함수 사용하기 (PHP 7.4부터)
usort($your_data, fn($a, $b) => strcmp($a->name, $b->name)); 
또한 숫자 값을 비교 fn($a, $b) => $a->count - $b->count하는 경우 “비교”기능이 트릭을 수행해야합니다.
답변
클로저를 사용하는 더 좋은 방법
usort($your_data, function($a, $b)
{
    return strcmp($a->name, $b->name);
});
이것은 PHP 문서에는 없지만 5.3 이상의 클로저를 사용하는 경우 호출 가능한 인수가 제공 될 수있는 곳에서 지원됩니다.
답변
정수 값을 정렬하려면 다음을 수행하십시오.
// Desc sort
usort($array,function($first,$second){
    return $first->number < $second->number;
});
// Asc sort
usort($array,function($first,$second){
    return $first->number > $second->number;
});
문자열로 업데이트 하면 동일한 레지스터 (위 또는 아래)로 변환하는 것을 잊지 마십시오
// Desc sort
usort($array,function($first,$second){
    return strtolower($first->text) < strtolower($second->text);
});
// Asc sort
usort($array,function($first,$second){
    return strtolower($first->text) > strtolower($second->text);
});
답변
당신이 PHP는 OOP를 사용하는 경우 당신을 변경해야 할 수도 있습니다 :
public static function cmp($a, $b) 
{
    return strcmp($a->name, $b->name);
}
//in this case FUNCTION_NAME would be cmp
usort($your_data, array('YOUR_CLASS_NAME','FUNCTION_NAME')); 
답변
usort($array, 'my_sort_function');
var_dump($array);
function my_sort_function($a, $b)
{
    return $a->name < $b->name;
}
count필드 와 동일한 코드가 사용됩니다 .
에 대한 자세한 내용 usort: http://ru2.php.net/usort
Btw, 그 어레이를 어디서 얻었습니까? 나는 데이터베이스에서 그것을 원하지 않습니까?
답변
이 기능을 사용할 수 있습니다 (PHP 버전> = 5.3에서 작동).
function sortArrayByKey(&$array,$key,$string = false,$asc = true){
    if($string){
        usort($array,function ($a, $b) use(&$key,&$asc)
        {
            if($asc)    return strcmp(strtolower($a{$key}), strtolower($b{$key}));
            else        return strcmp(strtolower($b{$key}), strtolower($a{$key}));
        });
    }else{
        usort($array,function ($a, $b) use(&$key,&$asc)
        {
            if($a[$key] == $b{$key}){return 0;}
            if($asc) return ($a{$key} < $b{$key}) ? -1 : 1;
            else     return ($a{$key} > $b{$key}) ? -1 : 1;
        });
    }
}
예:
sortArrayByKey($yourArray,"name",true); //String sort (ascending order)
sortArrayByKey($yourArray,"name",true,false); //String sort (descending order)
sortArrayByKey($yourArray,"id"); //number sort (ascending order)
sortArrayByKey($yourArray,"count",false,false); //number sort (descending order)
답변
다음 usort과 같이 사용할 수 있습니다 .
usort($array,function($first,$second){
    return strcmp($first->name, $second->name);
});