>  기사  >  백엔드 개발  >  PHP 배열을 인덱스 배열로 변환하는 방법

PHP 배열을 인덱스 배열로 변환하는 방법

PHPz
PHPz원래의
2023-04-26 14:19:13615검색

PHP 프로그래밍에서 배열은 데이터를 저장, 처리 및 작동하는 데 도움이 되는 매우 중요한 데이터 유형입니다. 그 중 인덱스 배열은 가장 일반적으로 사용되는 배열 유형 중 하나로 숫자 값이나 문자열 값에 해당하는 숫자를 키 이름으로 사용합니다. 여기서는 인덱스 배열에서 순열을 수행하는 방법에 대해 설명합니다.

1. 배열 정렬 방법

PHP에서는 아래와 같이 sort() 함수를 사용하여 인덱스 배열을 오름차순으로 정렬하고, rsort() 함수를 사용하여 인덱스 배열을 내림차순으로 정렬할 수 있습니다.

//升序排列 
$numbers = array(3, 1, 5, 2, 4); 
sort($numbers); 
print_r($numbers); 

//降序排列 
$numbers = array(3, 1, 5, 2, 4);  
rsort($numbers);  
print_r($numbers);

출력 결과는 다음과 같습니다.

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )

2. 배열 전치 방법

배열 전치란 다차원 배열의 행과 열을 교환하여 새로운 배열을 생성하는 것을 말합니다. 예를 들어 2차원 배열의 경우:

$nums = array( 
    array(1, 2, 3), 
    array(4, 5, 6), 
    array(7, 8, 9) 
);

array_map() 함수와 null 값을 사용하여 다음과 같이 전치할 수 있습니다.

function transposeArray($array, $nullFiltered = true) { 
    $aOut = array_map(null, ...$array); 
    return ($nullFiltered) ? array_filter($aOut) : $aOut; 
} 
 
print_r(transposeArray($nums));

출력 결과는 다음과 같습니다.

Array ( 
    [0] => Array ( [0] => 1 [1] => 4 [2] => 7 ) 
    [1] => Array ( [0] => 2 [1] => 5 [2] => 8 ) 
    [2] => Array ( [0] => 3 [1] => 6 [2] => 9 ) 
)

여기서 먼저 함수를 정의합니다. transposeArray라는 이름이 배열과 부울 변수로 전달됩니다. 그 중 PHP 5.6 버전에서 도입된 가변 길이 매개 변수(...$array)를 사용하여 전치하려는 다차원 배열의 각 하위 배열에 대해 null 값을 구현합니다. 마지막으로 array_filter() 함수를 사용하여 결과 배열에서 null 값을 필터링하고 필요한 결과를 얻습니다.

3. 배열 정렬과 전치의 조합

실제 프로그래밍 과정에서는 특정 키워드에 따라 다차원 배열을 정렬해야 하는 경우가 많고, 정렬 후 배열을 전치해야 하는 경우도 있습니다. 예를 들어 숫자를 키로 사용하는 다음과 같은 연관 배열이 있습니다.

$arr = array(
    3 => array("name" => "apple", "price" => 2.5),
    1 => array("name" => "banana", "price" => 1.5),
    4 => array("name" => "orange", "price" => 3.5),
    2 => array("name" => "pear", "price" => 2.0)
);

다음으로 sortArray() 함수를 정의하여 '가격'에 따라 오름차순으로 배열을 정렬하고 결과 배열을 전달할 수도 있습니다. 코드는 다음과 같습니다.

function sortArray($arr, $keyName = '', $sortOrder = 'ASC') {
    $sortResult = array();
    $arrLen = count($arr);
    if ($arrLen > 0) {
        $priceArr = array();
        for ($i = 0; $i < $arrLen; $i++) {
            if ($keyName != &#39;&#39; && isset($arr[$i][$keyName])) {
                $priceArr[] = $arr[$i][$keyName];
            } else {
                $priceArr[] = $arr[$i][&#39;price&#39;];
            }
        }
        if (strtolower($sortOrder) == &#39;desc&#39;) {
            array_multisort($priceArr, SORT_DESC, SORT_NUMERIC, $arr);
        } else {
            array_multisort($priceArr, SORT_ASC, SORT_NUMERIC, $arr);
        }
        $sortResult = transposeArray($arr);
    }
    return $sortResult;
}

print_r(sortArray($arr, &#39;price&#39;, &#39;ASC&#39;));

두 번째 매개변수로 'price'를 전달하면 출력 결과는 다음과 같습니다.

Array ( 
    [name] => Array ( [0] => banana [1] => pear [2] => apple [3] => orange ) 
    [price] => Array ( [0] => 1.5 [1] => 2 [2] => 2.5 [3] => 3.5 ) 
)

여기서 먼저 들어오는 배열이 비어 있는지 여부를 판단합니다. , 그렇지 않은 경우 먼저 원래 배열에서 가격 값을 가져온 다음 array_multisort() 함수를 사용하여 배열을 오름차순 또는 내림차순으로 정렬합니다. 그런 다음 transposeArray() 함수를 사용하여 결과 배열을 전치합니다.

요약

이 글은 요약하자면 PHP에서 인덱스 배열을 정렬하는 방법을 소개합니다. 정렬은 sort(), rsort() 함수를 통해 구현하고, 배열의 전치(transpose)는 transposeArray() 함수를 통해 구현하며, 다차원 배열의 정렬과 전치는 정렬과 전치를 결합하여 구현한다. 이러한 방법을 익히면 PHP 프로그래밍의 편의성과 유연성이 향상되고 프로그램 개발 효율성이 향상됩니다.

위 내용은 PHP 배열을 인덱스 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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