2009-09-15 7 views

답변

24

사용 var_export 당신은 또한 유효한 PHP 코드

인 표현을 원하는 경우
$a = array (1, 2, array ("a", "b", "c")); 
$dump=var_export($a, true); 
echo $dump; 

array (
0 => 1, 
1 => 2, 
2 => 
array (
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
), 
) 

가 배열로 그 다시 켜려면 표시됩니다, 당신은 사용할 수 있습니다 평가, 예를 들어, 당신이 비록 이렇게 할 이유

eval("\$foo=$dump;"); 
var_dump($foo); 

확실하지. PHP 데이터 구조를 어딘가에 저장하고 나중에 다시 만들려면이 작업에 더 적합한 serialize()unserialize()을 확인하십시오.

+0

이것은 잘못되었습니다. 그것은 배열을 생성하지 않고 단지 $ foo를 문자열로 만든다. $ foo는 파싱되어야하는 문자열 인 $ dump와 동일하다. –

+2

정말 잘못이 아니에요. 시도 해봐. http://codepad.viper-7.com/7ATm27 –

+0

아니요 작동하지 않습니다. outputtet 문자열을 취해서 처음 두 줄을 주석으로 처리하고 $ dump를 출력 된 문자열 (html 또는 text를 위축시키는)으로 설정하면 구문 오류가 발생합니다. var_export-ed 변수를 사용하고 이미 var_dump-ed 문자열 만 사용하는 경우는 다릅니다. – Seika85

1

수 없습니다. var_dump은 텍스트 만 출력하지만 아무 것도 반환하지 않습니다.

+0

goold old copy paste를 통해 var_dump에서 문자열을 갖는 것은 어떨까요? (나는 거대한 var_dumps를 텍스트 파일에 붙여 넣고 복사하는 사람들을 알고 있습니다.) – Seika85

+0

@ Seika85 : 출력 버퍼링을 사용하여 결과를 문자열로 얻으라고 말할 수 있습니다. 그러나이 질문의 목적을 위해, 이것은 배열을 얻는 것에 대해 물어볼 때 여전히»아니오입니다. – Joey

1

var_export 아마도 전달 된 값의 유효한 PHP 표현을 제공 할 수 있습니다.

+1

방금 ​​편집했습니다 내 생각! 죄송합니다! –

1

var_exporteval을 통해 실행할 수있는 PHP 코드를 만듭니다.

하지만 궁금한 점은 무엇입니까?

1

나는 비슷한 문제가있다. 결국 긴 runing 스크립트는 결국 큰 배열의 vardump를 생성한다. 어떻게 든 분석을 위해 다시 구문 분석해야했습니다. 내 솔루션은 다음과 같았습니다 :

cat log.stats | 
    sed 's/\[//g' | 
    sed 's/\]//g' | 
    sed -r 's/int\(([0-9]+)\)/\1,/g' | 
    sed 's/\}/\),/g' | 
    sed -r 's/array\([0-9]+\) \{/array(/g' > 
    log.stats.php 
+0

좋은 대답입니다. 유일한 문제는 문자열을 포함하는 값이있는 경우입니다. 그래서 그들은 '' – WonderLand

+0

에 의해 래핑되지 않습니다. 확실히 내 특정 시나리오에서 작동하는 빠른 해킹이었습니다. 일반적으로 var_dump는 구문 분석하기가 끔찍하므로 가능할 때마다 다른 것을 사용합니다 (주로 json_encode). 당신은 문자열이 문제를 일으킬 것이라고 맞습니다. 슬래시 나 따옴표가 있으면 큰 문제가 발생합니다. var dump output (=>, [8] 또는 int (12))처럼 보이는 무언가가 있다면 보통입니다. :) – qbolec

관련 문제