PHP에서 var_export와 var_dump의 차이점 분석

小云云
풀어 주다: 2023-03-21 12:00:01
원래의
1894명이 탐색했습니다.

이 기사는 주로 PHP에서 var_export와 var_dump의 차이점에 대한 분석을 공유합니다.

var_dump (PHP 3 >= 3.0.5, PHP 4, PHP 5)

var_dump -- 변수에 대한 정보 인쇄
Description

void var_dump ( mixed expression [, mixed expression [, ...]] )
로그인 후 복사

이 함수는 하나 이상의 표현식에 대한 구조를 표시합니다. 표현식의 유형과 값을 포함합니다. 배열은 값을 재귀적으로 확장하여 들여쓰기를 통해 구조를 표시합니다.

코드는 다음과 같습니다.

$data = array ('name' => 'abc', 'job' => 'programmer','a'=>array('aa','cc','bb'));
$data = var_dump($data,TRUE); 
echo $data;
로그인 후 복사

출력 형식은 다음과 같습니다.

array(3) { 
["name"]=> 
string(3) "abc" 
["job"]=> 
string(10) "programmer" 
["a"]=> 
array(3) { 
[0]=> 
string(2) "aa" 
[1]=> 
string(2) "cc" 
[2]=> 
string(2) "bb" 
} 
} 
bool(true)
로그인 후 복사

twovar_export

(PHP 4 >= 4.2.0, PHP 5) 
var_export -- 输出或返回一个变量的字符串表示 
描述 
mixed var_export ( mixed expression [, bool return] )
로그인 후 복사

이 함수는 함수에 전달된 변수에 대한 구조적 정보를 반환합니다. var_dump()와 유사합니다. 반환한다는 점을 제외하면 합법적인 PHP 코드를 나타냅니다.
함수의 두 번째 매개변수를 TRUE로 설정하면 변수 표현을 반환할 수 있습니다.
EG:

var_export(array('a','b',array('aa','bb','cc'))) 这种与VAR_DUMP没什么区别; 
$var =var_export(array('a','b',array('aa','bb','cc')),TRUE),加上TRUE后,不会再打印出来,而是给了一个变量,这样就可以直接输出;
echo $var;此时输出来的形式与var_dump()打印的相似。
로그인 후 복사

EG2

$data = array ('name' => 'abc', 'job' => 
'programmer','a'=>array('aa','cc','bb'));
$data = var_export($data,TRUE); echo $data;
로그인 후 복사

출력 형식은 다음과 같습니다.

array ( 
'name' => 'abc', 'job' =>
 'programmer', 'a' => array 
 ( 0 => 'aa', 1 => 'cc', 2 => 'bb', ),
  )
로그인 후 복사

다음은 보충 정보입니다.

error_log(var_export(yblog_mspconfiginit("ratings"),true));
로그인 후 복사

문제 원인

var_export는 합법적인 PHP 코드를 반환해야 합니다. , var_export 반환 코드는 PHP 코드로 직접 사용하여 변수를 할당할 수 있습니다. 그리고 이 변수는 var_export와 동일한 유형의 값을 얻습니다. 하지만 변수 유형이 리소스인 경우에는 단순히 복사할 수 없습니다. 따라서 var_export의 변수가 리소스 유형인 경우 var_export는 NULL을 반환합니다.

문제 발견

yatings_get_targets를 추적할 때

error_log(var_export(yblog_mspconfiginit("ratings"),true));老是打印出yblog_mspconfiginit(“ratings”)的返回是NULL
로그인 후 복사

가 발생한다고 생각했습니다. DB와의 연결이 불가능해서 하루동안 엉뚱한 길로 들어갔습니다.
마지막으로 이것이 var_export와 var_dump의 차이점 중 하나라는 것을 발견했습니다

이것은:
문제의 원인
var_export는 합법적인 PHP 코드를 반환해야 합니다. 즉, var_export가 반환한 코드는 PHP로 직접 할당될 수 있습니다. 코드. 그리고 이 변수는 var_export와 동일한 유형의 값을 가져옵니다. 그러나 변수 유형이 리소스인 경우 단순히 복사할 수 없습니다. 따라서 var_export의 변수가 리소스 유형인 경우 var_export는 NULL

인스턴스

$res = yblog_mspconfiginit("ratings"); 
var_dump($res); 
var_export($res);
로그인 후 복사

를 반환합니다. 결과:

코드는 다음과 같습니다.

resource(1) of type (yahoo_yblog)
로그인 후 복사

NULL 또 다른 예:

코드는 다음과 같습니다.

$res = fopen('status.html', 'r'); 
var_dump($res); 
var_export($res);
로그인 후 복사

결과:

resource(2) of type (stream) 
NULL
로그인 후 복사
관련 권장사항:

php var_export 함수 예제 설명

var_export 함수 요약 및 Var_dump 비교

var_export 및 var_dump 사용법 소개_PHP 튜토리얼

위 내용은 PHP에서 var_export와 var_dump의 차이점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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