> 백엔드 개발 > PHP 문제 > PHP에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법

PHP에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법

王林
풀어 주다: 2023-03-06 07:40:02
원래의
5755명이 탐색했습니다.

PHP에서 배열을 정렬하고 키 값을 변경하지 않는 방법: 먼저 배열의 키 이름을 가져온 다음 마지막으로 해당 키 이름에 따라 값을 할당해야 합니다. 새로운 배열을 만들고 반환합니다.

PHP에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법

구현 코드:

(권장 튜토리얼: php 비디오 튜토리얼)

$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => 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에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법

키 이름은 그대로 유지되며 구현 원리는 매우 간단합니다. 먼저 키 이름을 꺼낸 다음 키 이름을 정렬한 다음 해당 키 이름에 값을 할당하여 새로운 배열을 구성하고 반환합니다. 그것.
보시다시피 여기서는 주로 PHP의 몇 가지 핵심 정렬 기능을 사용합니다.

asort()는 연관 배열을 키 값에 따라 오름차순으로 정렬합니다.

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

natsort()는 "자연스러운 정렬", 즉 1부터 9까지의 숫자를 정렬하는 방법과 a부터 z까지의 문자를 짧은 문자부터 정렬하는 방법을 구현합니다. 배열의 인덱스는 셀 값과 연결된 상태로 유지됩니다.

참고: 자연 정렬 알고리즘에서는 숫자 2가 숫자 10보다 작습니다. 컴퓨터 정렬 알고리즘에서는 "10"의 첫 번째 숫자가 2보다 작기 때문에 10은 2보다 작습니다.

관련 권장 사항: php training

위 내용은 PHP에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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