> 백엔드 개발 > PHP 문제 > PHP에서 1차원 배열을 2차원 배열로 변환

PHP에서 1차원 배열을 2차원 배열로 변환

王林
풀어 주다: 2023-05-23 11:10:37
원래의
1286명이 탐색했습니다.

PHP에서는 1차원 배열을 2차원 배열로 변환해야 하는 경우가 있습니다. 예를 들어, 많은 양의 데이터가 포함된 1차원 배열을 처리해야 하지만 특정 규칙에 따라 데이터를 그룹화해야 하는 경우가 있습니다. 이 경우 1차원 배열을 2차원 배열로 변환해야 합니다. 정렬.

다음으로 1차원 배열을 2차원 배열로 변환하는 방법을 소개하겠습니다.

방법 1: for 루프 사용

먼저 for 루프를 사용하여 1차원 배열을 순회한 다음 데이터 그룹화에 따라 새로운 2차원 배열에 데이터를 추가할 수 있습니다. 이 방법은 비교적 간단하지만 일부 변수를 수동으로 유지 관리해야 하므로 번거롭습니다.

구현 코드는 다음과 같습니다.

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 新的二位数组
$newArr = array();

// 遍历一维数组
for ($i = 0; $i < count($arr); $i++) {
    $sex = $arr[$i]["sex"];
    $newArr[$sex][] = $arr[$i];
}

// 打印结果
print_r($newArr);
로그인 후 복사

실행 결과는 다음과 같습니다.

Array
(
    [male] => Array
        (
            [0] => Array
                (
                    [name] => Tom
                    [age] => 18
                    [sex] => male
                )

            [1] => Array
                (
                    [name] => Bob
                    [age] => 22
                    [sex] => male
                )

        )

    [female] => Array
        (
            [0] => Array
                (
                    [name] => Jerry
                    [age] => 20
                    [sex] => female
                )

            [1] => Array
                (
                    [name] => Lucy
                    [age] => 21
                    [sex] => female
                )

        )

)
로그인 후 복사

방법 2: array_reduce 함수 사용

PHP의 array_reduce 함수는 배열의 값을 반복적으로 결합하여 단일 값으로 만들 수 있습니다. 맞춤 기능. array_reduce 함수를 사용하여 1차원 배열을 2차원 배열로 변환할 수 있습니다.

구현 코드는 다음과 같습니다.

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 使用 array_reduce 函数
$newArr = array_reduce($arr, function($carry, $item) {
    $sex = $item["sex"];
    if (!isset($carry[$sex])) {
        $carry[$sex] = array();
    }
    $carry[$sex][] = $item;
    return $carry;
}, array());

// 打印结果
print_r($newArr);
로그인 후 복사

실행 결과는 방법 1과 같습니다.

방법 3: array_map 함수 사용

PHP의 array_map 함수는 처리를 위해 하나 이상의 배열의 각 요소를 콜백 함수에 전달한 다음 처리된 결과를 반환할 수 있습니다. 이 처리 방법을 사용하면 순환 사용을 피할 수 있습니다.

구현 코드는 다음과 같습니다.

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 使用 array_map 函数
$newArr = array_map(function($item) {
    $sex = $item["sex"];
    return array($sex => $item);
}, $arr);

// 将处理后的二维数组进行合并
$newArr = call_user_func_array("array_merge", $newArr);

// 打印结果
print_r($newArr);
로그인 후 복사

연산 결과는 방법 1, 방법 2와 같습니다.

요약

이 글에서는 for 루프, array_reduce 함수, array_map 함수를 사용하여 1차원 배열을 2차원 배열로 변환하는 세 가지 방법을 소개했습니다.

이러한 방법에는 모두 장단점이 있으며 어떤 방법을 선택할 것인지도 실제 상황에 따라 판단해야 합니다. 그러나 일반적으로 array_reduce 함수와 array_map 함수를 사용하는 것이 더 간결하고 우아합니다.

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

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