2017-12-27 6 views
0

attrubites()을 사용하지 않고 배열에서 속성을 읽는 방법을 알고 싶습니다. 아래는 내 XML의 일부입니다 :속성없이 배열에서 속성을 얻는 방법

<?xml version="1.0" encoding="UTF-8"?> 
<offer file_format="IOF" version="1.0" generated="2017-12-27 11:04:38" > 
<products currency="PLN"> 
    <product id="2055"> 
     <price gross="709" net="577"/> 
    </product> 

아래에 모든 속성을 읽는 코드가 있습니다. $product->attributes()->id을 제거하고 싶습니다. 배열 값을 json_decode(json_encode($id), TRUE);으로 "정리"해야하고 값을 읽으려면 $xmlArray[0];을 사용해야합니다.

$xmlUrl = 'myfile.xml'; 
$xmlVar = simplexml_load_string(file_get_contents($xmlUrl)); 
foreach ($xmlVar AS $products) { 
    foreach ($products AS $product) { 
     $id = $product->attributes()->id; 

     $xmlArray = json_decode(json_encode($id), TRUE); 
     $withOutId = $xmlArray[0]; 
    } 
} 

가 나는 시작에

json_decode(json_encode($id), TRUE); 

를 이동하여 문자열이 배열을 변환 할하지만 난 다음 속성을 읽을 수있는 방법을 모르겠어요. 도와 주셔서 감사합니다.

종류는 그것은 SimpleXMLElement 객체를 반환, 배열을 반환하지 않습니다

+0

file_get_contents :

$id = (int) $product->attributes()->id; var_dump($id); // int(2055) 

속성에 액세스하는 또 다른 약간 청소기 방법은 사용하는 배열 스타일의 구문이다 배열을 반환하지 않습니다. fopen() 및 fgets() 루프를 사용하여 배열을 만들 수 있습니다. – halojoy

답변

0

라인

$id = $product->attributes()->id; 

을 간주한다. json_encode/decode을 통해 그것을 실행할 필요가 없습니다, 당신은 단지 기본 PHP 형식으로 캐스팅해야합니다

$id = (int) $product['id']; 
var_dump($id); // int(2055) 
+1

감사합니다. (정수)와 (둥근) 나를 위해 작동합니다. –

관련 문제