개발 꿀팁/PHP

php 배열에서 여러 열을 지정하는 방법 반환

Jammie 2022. 7. 15. 12:41
반응형

phparray_column 메서드는 배열에 지정된 열을 반환할 수 있지만 여러 열을 반환할 수 없습니다. 이 텍스트는 array_column 메서드의 사용법을 소개하고 배열에 지정된 열을 반환하는 방법을 보여 줍니다.


1.array_column 설명
array_column은 배열에서 지정한 열을 반환할 수 있습니다

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

매개 변수 설명:

인풋
배열 열을 꺼내는 다차원 배열이 필요합니다. 개체 집합을 포함하는 배열이 제공되면 public 속성만 꺼냅니다. private와 protected 속성도 꺼내기 위해서는 _get()과 _isset() 매직 메서드를 구현해야 합니다.

column_key
값을 반환해야 하는 열, 그것은 삭일 수 있다.배열의 열 인덱스를 따오거나 배열의 열을 연결하는 키도 속성 이름일 수 있습니다. NULL일 수도 있습니다. 이 경우 배열 전체로 돌아갑니다(index_key 파라미터에 따라 배열 키를 재설정할 때 유용합니다).

index_key
배열의 색인/ 키를 반환하는 열로 사용하기열의 정수 인덱스이거나 문자열 키 값일 수 있습니다.


예:
배열의 열을 되돌립니다Name

<?php
$arr = array(
    array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
    array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
    array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);

$result = array_column($arr, 'name');

print_r($result);
?>

출력:

Array
(
    [0] => fdipzone
    [1] => terry
    [2] => alex
)

2. 배열에서 여러 열을 지정하는 방법을 반환합니다.
array_column 방법 가능반환 배열에 열을 하나 지정하지만 반환할 수 없으므로 다음 방법을 사용하여 반환 배열에 다중 열을 지원합니다. 매개 변수 호출은 array_column과 유사합니다.

<?php
/**
 * 배열에서 지정한 열을 반환합니다
 *
 * @param  Array  $input       배열의 다차원 배열 꺼내기
 * @param  String $column_keys 내보낼 열 이름, 쉼표로 구분하고 전달하지 않으면 모든 열을 반환합니다
 * @param  String $index_key   배열의 인덱스를 반환하는 열
 * @return Array
 */
function array_columns($input, $column_keys=null, $index_key=null){
    $result = array();

    $keys =isset($column_keys)? explode(',', $column_keys) : array();

    if($input){
        foreach($input as $k=>$v){

            // 반환 열 지정
            if($keys){
                $tmp = array();
                foreach($keys as $key){
                    $tmp[$key] = $v[$key];
                }
            }else{
                $tmp = $v;
            }

            // 색인 열 지정
            if(isset($index_key)){
                $result[$v[$index_key]] = $tmp;
            }else{
                $result[] = $tmp;
            }

        }
    }

    return $result;
}

// 데모 코드
$arr = array(
    array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
    array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
    array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);

echo '반환 열과 색인 열'. PH_EOL;
$result = array_columns($arr, 'name,profession', 'id');
print_r($result);

echo PHP_EOL.'반환 열 지정, 색인 열 지정 안 함'.PHP_EOL;
$result = array_columns($arr, 'name,profession');
print_r($result);

echo PHP_EOL.'반환 열 지정 안 함, 색인 열 지정'.PHP_EOL;
$result = array_columns($arr, null, 'id');
print_r($result);

echo PHP_EOL.'반환 열, 색인 열 지정 안 함'.PHP_EOL;
$result = array_columns($arr);
print_r($result);
?>

输出:

 

반환 열과 색인 열 지정
Array
(
    [1001] => Array
        (
            [name] => fdipzone
            [profession] => programmer
        )

    [1002] => Array
        (
            [name] => terry
            [profession] => designer
        )

    [1003] => Array
        (
            [name] => alex
            [profession] => tester
        )

)

반환 열 지정, 색인 열 지정 안 함
Array
(
    [0] => Array
        (
            [name] => fdipzone
            [profession] => programmer
        )

    [1] => Array
        (
            [name] => terry
            [profession] => designer
        )

    [2] => Array
        (
            [name] => alex
            [profession] => tester
        )

)

반환 열 지정 안 함, 색인 열 지정
Array
(
    [1001] => Array
        (
            [id] => 1001
            [name] => fdipzone
            [age] => 18
            [profession] => programmer
        )

    [1002] => Array
        (
            [id] => 1002
            [name] => terry
            [age] => 19
            [profession] => designer
        )

    [1003] => Array
        (
            [id] => 1003
            [name] => alex
            [age] => 20
            [profession] => tester
        )

)

반환 열, 색인 열 지정 안 함
Array
(
    [0] => Array
        (
            [id] => 1001
            [name] => fdipzone
            [age] => 18
            [profession] => programmer
        )

    [1] => Array
        (
            [id] => 1002
            [name] => terry
            [age] => 19
            [profession] => designer
        )

    [2] => Array
        (
            [id] => 1003
            [name] => alex
            [age] => 20
            [profession] => tester
        )

)

 

반응형