Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 7에서 배열 구조와 값 출력하기: print_r() vs var_dump() 완벽 비교

PHP에서 배열(Array)은 서로 관련된 여러 요소를 하나의 변수 아래에 저장할 수 있는 데이터 구조입니다. 개발 과정에서 배열의 내부 구조나 저장된 값을 확인해야 할 때가 많은데, 이때 PHP에서 제공하는 내장 함수를 활용하면 손쉽게 확인할 수 있습니다.

PHP에서 배열의 구조와 값을 사람이 읽기 쉬운 형태로 출력하거나 프로그램의 실행 결과를 디버깅하려면 var_dump() 또는 print_r() 함수를 사용할 수 있습니다.

print_r()과 var_dump()의 차이점

print_r()

print_r()은 변수 정보를 사람이 읽기 쉬운(human-readable) 형식으로 출력하는 데 사용됩니다. 배열을 출력할 때는 키(key)와 요소(element)가 한눈에 들어오도록 정렬된 형태로 표시됩니다.

또한 print_r()은 객체의 protected 및 private 프로퍼티까지 표시해 주지만, static 클래스 멤버는 표시하지 않는다는 점을 기억해 두세요.

var_dump()

var_dump()는 하나 이상의 변수나 표현식에 대한 구조 정보를 출력하며, 각 값의 데이터 타입(type)값(value)까지 함께 보여줍니다. 배열과 객체는 재귀적으로(recursively) 탐색되며, 들여쓰기를 통해 계층 구조를 시각적으로 파악할 수 있습니다.

즉, 단순히 값만 확인하고 싶다면 print_r(), 값의 데이터 타입까지 정확하게 확인하고 싶다면 var_dump()를 사용하는 것이 좋습니다.


print_r() 사용 예제

<?php
    $x = array ('x' => 'Dept', 'y' => 'Employee', 'z' => array ('a', 'b', 'c'));
    print_r ($x);
?>

출력 결과

print_r() 프로그램의 실행 결과는 다음과 같습니다.

Array
(
    [x] => Dept
    [y] => Employee
    [z] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )
)

var_dump() 사용 예제

<?php
    $x = array(1, 2, 3, array("x", "y", "z", "a"));
    var_dump($x);
?>

출력 결과

var_dump() 프로그램의 실행 결과는 다음과 같습니다. 각 요소의 데이터 타입(int, string 등)과 길이까지 함께 출력되는 것을 확인할 수 있습니다.

array(4) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
    [3]=>
    array(4) {
        [0]=>
        string(1) "x"
        [1]=>
        string(1) "y"
        [2]=>
        string(1) "z"
        [3]=>
        string(1) "a"
    }
}

print_r()과 var_dump()를 함께 사용한 예제

두 함수를 하나의 프로그램에서 동시에 사용하면 출력 형식의 차이를 더욱 명확하게 비교할 수 있습니다.

<?php
    $students = array("Rohan", "Mohan", "Thomas"); // 학생 배열 생성
    print_r($students);
    //echo "<hr>";
    var_dump($students);
?>

출력 결과

위 프로그램의 실행 결과는 다음과 같습니다.

Array
(
    [0] => Rohan
    [1] => Mohan
    [2] => Thomas
)
array(3) {
    [0]=>
    string(5) "Rohan"
    [1]=>
    string(5) "Mohan"
    [2]=>
    string(6) "Thomas"
}

마무리

PHP 7에서 배열을 디버깅할 때 print_r()은 깔끔하고 읽기 쉬운 출력에 적합하고, var_dump()는 데이터 타입과 구조를 상세히 분석해야 할 때 유용합니다. 상황에 맞게 두 함수를 적절히 활용하면 배열 관련 문제를 더 빠르고 정확하게 해결할 수 있습니다.