2013-10-05 2 views
2

변수를 오류보고 클래스 용으로 배열에 가져 오려고 시도했지만 변수가 설정되지 않은 경우 "압축"되지 않았습니다.compact() 빈 변수를 추가하지 않음

$testVar1 = 123; 
$testVar2 = 'ABC'; 

$ErrorArray = compact('testVar1', 'testVar2', 'notSetVar'); 
그때와 $ ErrorArray을 통해 걸어

:

foreach($ErrorArray as $key => $value) { 
    $TempErrorMessage .= '$'.$key.' == '.$value.' ---- '; 
} 

결과 출력은 다음과 같습니다

$ testVar1 ==

아래 코드의 추출물이다 123 ---- $ testVar2 == ABC ----

문제는 "notSetVar"를 ""/ NULL로 출력하고 싶습니다. 내 오류는 .... 일 수 있습니다.

어떤 제안이라도 크게 환영받을 것입니다!

안부 포드

+0

변수가 정의되지 않은 경우 경고가 표시되지 않습니다. '설정되지 않은 문자열은 단순히 건너 뜁니다.' 이를 위해 자체 함수를 작성하는 것을 고려하십시오. – BlitZ

+0

SetVar는 어디에서 왔습니까? –

+0

notSetVar는 어디서도 오지 않는다! issset 변수에 대한 나의 예일 뿐이다. (솔직히 말해서는 안된다.하지만 이것은 오류보고를위한 것이기 때문에 내가 놓친 것을 알 수있는 기회가있다. 또는 시스템 오류로 인해 올바르게 설정되지 않았습니다.) – Ford

답변

1

은 PHP의 문서에 따르면 http://php.net/manual/en/function.compact.php

컴팩트 변수와 그 값을 포함하는 배열을 생성한다.

각각에 대해 compact()는 현재 기호 테이블에서 해당 이름의 변수를 찾고 출력 배열에 추가하여 변수 이름이 키가되고 변수의 내용이 해당 값이됩니다 키. 즉, extract()의 반대입니다.

설정되지 않은 문자열은 단순히 건너 뜁니다.

따라서 변수를 설정하지 않으면 compact를 통해 전달할 수 없습니다. 내 제안은 compact() 전에 변수를 확인합니다.

$testVar1 = 123; 
    $testVar2 = 'ABC'; 
    if (!isset($notSetVar) { 
    $notSetVar = null; 
    } 

    $ErrorArray = compact('testVar1', 'testVar2', 'notSetVar'); 

var_dump($ErrorArray); 
+0

고맙습니다. "설정되지 않은 문자열은 단순히 건너 뜁니다."라고 말한 부분을 보지 못했습니다. 내 실수. 다른 방법으로 작업하겠습니다 :-) – Ford

관련 문제