>  기사  >  백엔드 개발  >  PHP에서 내부 배열 값을 기준으로 다차원 배열을 정렬하는 방법은 무엇입니까?

PHP에서 내부 배열 값을 기준으로 다차원 배열을 정렬하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 21:30:29387검색

How to Sort Multi-Dimensional Arrays Based on Inner Array Value in PHP?

PHP에서 내부 배열 값을 기준으로 다차원 배열 정렬

PHP에서 배열은 데이터 구성 및 저장을 위한 강력한 데이터 구조를 제공합니다. 그러나 내부 배열 내의 특정 값을 기반으로 다차원 배열을 정렬하는 것은 어려운 작업이 될 수 있습니다.

문제 설명

다음 데이터 구조를 가진 PHP 해시 테이블을 고려해보세요.

[
    [
        "type" => "suite",
        "name" => "A-Name"
    ],
    [
        "type" => "suite",
        "name" => "C-Name"
    ],
    [
        "type" => "suite",
        "name" => "B-Name"
    ]
]

목표는 내부 배열의 "name" 키를 기준으로 이 데이터 구조를 정렬하는 것입니다.

정렬 방법

다양한 PHP 함수를 사용하여 배열을 정렬할 수 있습니다.

  • ksort: 키를 기준으로 연관 배열(해시테이블)을 정렬합니다.
  • sort: 값을 사용하여 배열을 정렬합니다.
  • usort: 사용자 정의 비교 함수를 사용하여 배열을 정렬합니다.

그러나 이러한 함수 중 어느 것도 내부 배열 내의 키를 기반으로 한 정렬을 직접 지원하지 않습니다.

사용자 정의 정렬 기능

이러한 한계를 극복하기 위해 사용자 정의 정렬 기능을 정의하여 내부 배열 내에서 원하는 값을 비교할 수 있습니다. 이는 usort 함수를 사용하여 수행할 수 있습니다.

<code class="php">function cmp($a, $b) {
    return $b['name'] - $a['name'];
}</code>

이 함수는 내부 배열의 "name" 키를 비교하고 첫 번째 배열의 이름이 다음보다 큰 경우 음수 값을 반환합니다. 두 번째 배열 이름.

배열 정렬

비교 함수가 정의되면 usort 함수를 사용하여 배열을 정렬하는 데 사용할 수 있습니다.

<code class="php">usort($mydata, "cmp");</code>

대체 솔루션

사용자 정의 정렬 기능에 대한 대체 솔루션은 정렬할 값만 포함하는 새 배열을 만드는 것입니다. 이는 중첩 루프와 조건문을 사용하여 수행할 수 있습니다.

<code class="php">function array_sort($array, $on, $order=SORT_ASC) {
    // ...
    return $new_array;
}</code>

이 함수는 정렬할 배열, 정렬할 키 및 선택적 순서(오름차순 또는 내림차순)를 사용합니다. 정렬된 데이터가 포함된 새 배열을 반환합니다.

사용법

array_sort 함수는 다음과 같이 사용할 수 있습니다.

<code class="php">$mydata = [
    ['type' => 'suite', 'name' => 'A-Name'],
    ['type' => 'suite', 'name' => 'C-Name'],
    ['type' => 'suite', 'name' => 'B-Name']
];

$sorted_data = array_sort($mydata, 'name', SORT_ASC);

print_r($sorted_data);</code>

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

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