2012-10-20 3 views
0

나는이 객체PHP를 사용하여 SimpleXMLElement 객체의 데이터 유형을 변경할 수 있습니까?

$data = simplexml_load_string('<xml><admin>0</admin></xml>'); 

$ 데이터 -> 관리 = "0"(string)에게 있습니다. 그래서 문자열 0, 다음은 항상 변수를 캐스팅함으로써 진정한

if($data->admin) { 
    echo 'is admin'; 
} 

을 반환이 제대로

if((int)$data->admin) { 
    echo 'is admin'; 
} 

를 작동합니다하지만 내부 데이터 형식을 변경할 수 있는지 아직도 궁금하네요 (배열 내부 에서처럼) 객체를 사용하므로 타입 캐스팅을 수행 할 필요가 없습니다.

답변

0

SimpleXML에는 포함되지 않습니다. 대신 DOMDocument을 사용하면됩니다. SimpleXML 사용은 권장하지 않습니다.

0

문자열이 '0'이면 false를 반환합니다. int로 캐스트하면 여전히 false를 반환합니다.) 그리고 결국 논리 표현식은 부울로 캐스트됩니다. 그래서 당신이하려고하는 것은

+0

테스트 해 보셨습니까? 난 그냥했다! '$ data-> admin'은 문자열 0을 반환하고,'if ($ data-> admin)'는 ** true ** 값이 1 또는 0인지 여부를 반환합니다! – user1643156

+0

좋아, 이제 시험해 보겠다.))하지만 믿기지가 않아. –

+0

좋아요, 당신 말이 맞습니다.) 왜냐하면 그것은 객체로 간주되기 때문입니다. 문자열이 아닙니다. 이것을 시도해보십시오 : if ($ data-> admin! = 0) –

0

방금 ​​당신이) 비록 내가 돈 '을 시도 할 수 있습니다

if ($data->admin != 0){ 
    //is admin 
} 
+0

네, 타입 캐스팅 전에했던 방법입니다. 그것은 그것으로 살거나 DOMDocument를 배워야 만하는 것 같습니다. – user1643156

0

이 솔루션을 시도 할 수 대신 배역 그것의, PHP에서 그렇게 할 수있는 방법은 없습니다) 쓸모가 t 좋은 길을 생각해보십시오.) 여기서 가장 좋은 점은 다시 제로를 비교하고 타입 캐스팅을하지 않는 것입니다. 타입 캐스팅을 원할 경우 다음을 수행 할 수 있습니다. 하지만 1 대신에 3 가지 작업을하는 것은 좋지 않습니다.

$data = simplexml_load_string('<xml><admin>0</admin></xml>'); 
if(strip_tags($data->admin->asXML())) 
{ 
//is admin 
} 
관련 문제