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

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

不言
不言앞으로
2019-02-27 09:42:262284검색

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

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

ee1e477732f941563dde11c19100b482 array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
 

 = array_column(, 'age'(, SORT_ASC, ();

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

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

$data = array(
=> array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
=> array(
        'age' => 21,
        'name' => '慕容复'
    ),
=> array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
//根据字段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 = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    if ($type == 'asc') {
        natsort($keysvalue);
    }
    if ($type == 'desc') {
        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 = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    $type == 'asc' ? 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제