키 이름을 변경하지 않고 PHP에서 2차원 배열을 정렬하는 방법 소개(코드 예)

不言
풀어 주다: 2023-04-05 12:20:02
앞으로
2222명이 탐색했습니다.

이 글은 키 이름을 변경하지 않고 PHP에서 2차원 배열을 정렬하는 방법(코드 예제)을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다. .

2차원 배열에 지정된 키 이름을 정렬하려면 모두가 가장 먼저 생각하는 것이 array_multisort 함수입니다. 저는 이전에 array_multisort의 사용법에 대해 글을 쓴 적이 있습니다.
더 이상 고민하지 말고 예를 살펴보겠습니다.

<?php
$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
로그인 후 복사
 

 = array_column(, &#39;age&#39;(, SORT_ASC, ();
로그인 후 복사

주의깊은 친구들은 키 이름이 재설정되어 0부터 시작한다는 것을 알게 될 것입니다. 분명히 이것은 우리가 원하는 결과가 아닐 수도 있는데, 키 이름을 변경하지 않고 유지하는 방법은 무엇입니까?

다른 예를 살펴보겠습니다.

$data = array(
=> array(
        &#39;age&#39; => 22,
        &#39;name&#39; => &#39;鸠摩智&#39;
    ),
=> array(
        &#39;age&#39; => 21,
        &#39;name&#39; => &#39;慕容复&#39;
    ),
=> array(
        &#39;age&#39; => 27,
        &#39;name&#39; => &#39;乔帮主&#39;
    )
);
//根据字段age对数组$data进行降序排列
$data = arraySort($data, "age", "desc" );
print_r($data);

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = &#39;asc&#39;)
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    if ($type == &#39;asc&#39;) {
        natsort($keysvalue);
    }
    if ($type == &#39;desc&#39;) {
        natsort($keysvalue);
        $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变
    }
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}
로그인 후 복사

여기서 arraySort 함수를 단순화할 수도 있으며 처리 결과는 동일합니다.

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = &#39;asc&#39;)
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    $type == &#39;asc&#39; ? asort($keysvalue) : arsort($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}
로그인 후 복사

위 결과에서 볼 수 있는 내용은 다음과 같습니다.

키 이름이 유지됩니다. 구현 원리는 매우 간단합니다. 먼저 키 이름을 꺼낸 다음 키 이름을 정렬한 다음 해당 키 이름에 값을 할당하여 새 배열을 구성하고 반환합니다.
보시다시피 여기서는 주로 PHP

asort()의 여러 핵심 정렬 기능을 사용하여 연관 배열을 키 값에 따라 오름차순으로 정렬합니다.

arsort()는 연관 배열을 키 값에 따라 내림차순으로 정렬합니다.

natsort()는 "자연 정렬", 즉 1부터 9까지의 숫자를 정렬하는 방법과 a부터 z까지의 문자를 짧은 문자부터 정렬하는 방법을 구현합니다. 배열의 인덱스는 셀 값과 연결된 상태로 유지됩니다.
참고: 자연 정렬 알고리즘에서는 숫자 2가 숫자 10보다 작습니다. 컴퓨터 정렬 알고리즘에서는 "10"의 첫 번째 숫자가 2보다 작기 때문에 10은 2보다 작습니다.

위 내용은 키 이름을 변경하지 않고 PHP에서 2차원 배열을 정렬하는 방법 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!