>백엔드 개발 >PHP 튜토리얼 >하위 배열의 'optionNumber' 값을 기준으로 PHP 배열을 정렬하는 방법은 무엇입니까?

하위 배열의 'optionNumber' 값을 기준으로 PHP 배열을 정렬하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 02:32:09804검색

How to Sort a PHP Array by a Subarray's

PHP에서 하위 배열 값으로 배열 정렬: 종합 가이드

PHP에서 배열은 데이터를 구성하고 조작하는 데 없어서는 안 될 데이터 구조입니다. 때로는 하위 배열 내의 값을 기준으로 이러한 배열을 정렬해야 하는 경우도 있습니다. 이 문서에서는 특히 optionNumber 필드에 초점을 맞춰 하위 배열 값으로 배열을 정렬하는 가장 효과적인 방법을 살펴봅니다.

먼저 다음 예를 고려하세요.

$array = [
    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];

목표는 정렬하는 것입니다. optionNumber를 기준으로 증분 순서로 $array를 정렬하면 다음과 같은 정렬된 배열이 생성됩니다.

$sortedArray = [
    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];

이를 달성하려면 정렬을 수행하는 동안 PHP usort 기능은 효과적인 도구임이 입증되었습니다. 구현 방법은 다음과 같습니다.

function cmp_by_optionNumber($a, $b) {
  return $a["optionNumber"] - $b["optionNumber"];
}

usort($array, "cmp_by_optionNumber");

이 방법에서 cmp_by_optionNumber는 두 입력 배열의 optionNumber 값을 비교하는 사용자 정의 비교 함수입니다. 이 함수는 첫 번째 배열의 optionNumber가 두 번째 배열보다 작으면 음수 값을 반환하고, 같으면 0을, 첫 번째 배열의 optionNumber가 두 번째 배열보다 크면 양수 값을 반환합니다. 이 비교 함수를 활용하여 usort는 $array를 optionNumber 필드의 오름차순으로 효율적으로 정렬합니다.

PHP 버전 5.3 이상의 경우 더 깔끔한 접근 방식을 위해 익명 함수를 사용하는 것이 좋습니다.

usort($array, function ($a, $b) {
    return $a['optionNumber'] - $b['optionNumber'];
});

단, optionNumber 값이 문자열인 경우 비교 함수에서 뺄셈을 하면 잘못된 결과가 나올 수 있다는 점 유의하시기 바랍니다. 이러한 경우에는 다음 접근 방식을 사용하는 것이 좋습니다.

usort($array, function ($a, $b) {
    return strcmp($a['optionNumber'], $b['optionNumber']);
});

마지막으로 PHP 버전 7.0 이상에서는 우주선 연산자 <=> 특히 큰 숫자를 처리할 때 오버플로/잘림 문제를 방지하기 위해 빼기 대신 활용할 수 있습니다.

usort($array, function ($a, $b) {
    return $a['optionNumber'] <=> $b['optionNumber'];
});

설명된 방법 중 하나를 구현하면 하위 배열 값을 기준으로 PHP 배열을 효과적으로 정렬할 수 있습니다. 귀하의 데이터는 의미 있고 편리한 방식으로 구성됩니다.

위 내용은 하위 배열의 'optionNumber' 값을 기준으로 PHP 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.