>  기사  >  백엔드 개발  >  PHP에서 1차원 배열을 변환하는 방법

PHP에서 1차원 배열을 변환하는 방법

王林
王林원래의
2023-05-19 18:40:38389검색

2D 배열로 변환하시겠습니까?

PHP 프로그래밍에서는 데이터 처리 및 표시가 더 편리하도록 1차원 배열을 2차원 배열로 변환해야 하는 경우가 있습니다. 예를 들어 특정 규칙에 따라 데이터를 1차원 배열로 그룹화하고 이를 2차원 배열에 넣어 통계 및 분석을 용이하게 합니다. 이 글에서는 PHP에서 1차원 배열을 2차원 배열로 변환하는 방법과 데이터를 그룹화하고 정렬하는 방법을 소개합니다.

  1. 변환을 위해 array_chunk() 함수 사용

PHP는 array_chunk()라는 함수를 제공합니다. 이 함수는 배열을 여러 개의 작은 배열로 나눌 수 있으며, 각각의 작은 배열은 지정된 수의 요소를 포함합니다. 그 중 $size 매개변수는 각각의 작은 배열에 포함된 요소의 개수를 나타내며, $preserve_keys 매개변수는 원본 배열의 키 이름을 유지할지 여부를 지정합니다. 1차원 배열을 2차원 배열로 변환하려면 이 함수를 사용합니다. 다음은 샘플 코드입니다.

<?php
$original_array = array('a', 'b', 'c', 'd', 'e', 'f');
$chunked_array = array_chunk($original_array, 2);  // 将原数组按每2个元素分为一个小数组
print_r($chunked_array);
?>

위 코드의 출력은 다음과 같습니다.

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
            [1] => f
        )

)

array_chunk() 함수를 통해 원본 배열을 세 개의 작은 배열로 나누고 각 작은 배열에는 두 개의 요소가 포함됩니다. 이는 1차원 배열을 2차원 배열로 변환합니다.

  1. 변환을 위해 for 루프 사용

array_chunk() 함수를 사용하는 것 외에도 for 루프를 사용하여 이 변환 프로세스를 완료할 수도 있습니다. 다음은 샘플 코드입니다.

<?php
$original_array = array('a', 'b', 'c', 'd', 'e', 'f');
$chunked_array = array();
$chunk_size = 2;  // 每个小数组包含元素数量
$chunk_count = ceil(count($original_array) / $chunk_size);  // 小数组数量
for ($i = 0; $i < $chunk_count; $i++) {
    $chunked_array[$i] = array_slice($original_array, $i * $chunk_size, $chunk_size);
}
print_r($chunked_array);
?>

위 코드의 출력은 위의 array_chunk() 함수를 사용한 결과와 동일합니다. 이 예제에서는 먼저 작은 배열의 수를 계산한 다음 for 루프와 array_slice() 함수를 사용하여 원래 배열을 분할하고 $chunked_array 배열에 저장합니다.

  1. 데이터 그룹화 및 정렬

1차원 배열을 2차원 배열로 변환한 후 필요에 따라 데이터를 그룹화하고 정렬할 수 있습니다. 다음은 코드 예입니다.

<?php
$original_array = array(
    array('name' => '张三', 'age' => 18, 'gender' => '男'),
    array('name' => '李四', 'age' => 21, 'gender' => '女'),
    array('name' => '王五', 'age' => 22, 'gender' => '男'),
    array('name' => '赵六', 'age' => 19, 'gender' => '女')
);
$chunked_array = array_chunk($original_array, 2);  // 将原数组按每2个元素分为一个小数组
$sorted_array = array();
foreach ($chunked_array as $chunk) {
    $sorted_chunk = array();
    foreach ($chunk as $item) {
        $sorted_chunk[(int)$item['age']][] = $item;
    }
    ksort($sorted_chunk);
    $sorted_array[] = $sorted_chunk;
}
print_r($sorted_array);
?>

위 코드는 4개의 요소를 포함하는 1차원 배열 $original_array를 정의합니다. 각 요소는 이름, 연령 및 성별의 세 가지 키-값 쌍을 포함하는 연관 배열입니다. 원래 배열을 두 요소마다 작은 배열로 나누고, 작은 배열의 요소를 나이에 따라 정렬합니다. 마지막으로 구조는 다음과 같은 2차원 배열 $sorted_array를 얻습니다.

Array
(
    [0] => Array
        (
            [18] => Array
                (
                    [0] => Array
                        (
                            [name] => 张三
                            [age] => 18
                            [gender] => 男
                        )

                )

            [19] => Array
                (
                    [0] => Array
                        (
                            [name] => 赵六
                            [age] => 19
                            [gender] => 女
                        )

                )

        )

    [1] => Array
        (
            [21] => Array
                (
                    [0] => Array
                        (
                            [name] => 李四
                            [age] => 21
                            [gender] => 女
                        )

                )

            [22] => Array
                (
                    [0] => Array
                        (
                            [name] => 王五
                            [age] => 22
                            [gender] => 男
                        )

                )

        )

)

위의 코드에서는 동일한 그룹의 요소가 연령별로 정렬되고 최종 결과가 $sorted_array 배열에 배치됩니다.

요약

이 글에서는 변환을 위해 array_chunk() 함수와 for 루프를 사용하는 것을 포함하여 PHP에서 1차원 배열을 2차원 배열로 변환하는 방법을 소개하고, 추가적으로 데이터를 그룹화하고 정렬하는 방법을 소개합니다. 실제 프로그래밍 과정에서 우리는 필요에 따라 데이터 처리 및 표시를 위한 다양한 방법을 선택할 수 있습니다.

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

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