2010-05-26 69 views
0

作爲一個新手,我需要您從Simplexml對象獲取多維數組的幫助。 假設我的陣列是這樣的: 只是爲了讓想法:
這裏$數據是SimpleXML對象包含以下XML:從簡單的xml對象獲取多維數組的問題

<users> 
    <user> 
    <id></id> 
    <nm></nm> 
    <gender> 
     <male></male> 
     <female></female> 
    </gender> 
    </user> 
</users> 

在這裏,我的每個用戶的完美越來越陣列,但陣列中,當談到性別,它沒有顯示。我也需要一系列性別。我正在使用以下代碼:

foreach($data->users as $users) 
{ 
    $arr1 = array(); 
    foreach($users as $user) 
    { 
    foreach($user as $k=>$v) 
    { 
     $arr1[$k] = (string) $v; 
    } 
    } 
    $arr2[] = $arr1; 
} 

任何建議?

+0

請清理的問題 - 這是很難看到你在說什麼。 「假設數組就像:只是爲了得到想法:」?另外,將代碼放在自己的路線上,並進行格式化,將大有幫助。 – 2010-05-26 07:25:32

回答

0

你沒有正確使用foreach迭代器。它應該是這樣的:

$users = simplexml_load_string($the_xml_thing_you_posted); 

foreach ($users->user as $user) 
{ 
    $arr[] = array(
     'id' => (string) $user->id, 
     'nm' => (string) $user->nm 
    ); 
} 

現在我不知道你想用你的性別的事做什麼,這兩個元素是空的,這是什麼意思?

0

foreach($user as $k=>$v)不會遍歷您的user元素中的所有子元素。它遍歷所有user元素,它們是$users的子元素。爲了說明:

$data = new SimpleXMLElement('<data> 
    <users id="1"> 
    <user id="user1a"></user> 
    <user id="user1b"></user> 
    </users> 
    <users id="2"> 
    <user id="user2a"></user> 
    <user id="user2b"></user> 
    </users> 
</data>'); 

foreach($data->users as $users) 
{ 
    echo 'users id: ', $users['id'], "\n"; 
    foreach($users as $user) 
    { 
    echo " user id: ", $user['id'], "\n"; 
    } 
} 

打印

users id: 1 
    user id: user1a 
    user id: user1b 
users id: 2 
    user id: user2a 
    user id: user2b 

你可能想要的東西更像

$data = new SimpleXMLElement('<data> 
    <users> 
    <user> 
     <propA>A1</propA> 
     <propB>B1</propB> 
     <propC>C1</propC> 
    </user> 
    <user> 
     <propA>A2</propA> 
     <propB>B2</propB> 
     <propC>C2</propC> 
    </user> 
    </users> 
</data>'); 

$result = array(); 
foreach($data->users as $users) 
{ 
    foreach($users as $user) 
    { 
    $arr = array(); 
    foreach($user->children() as $e) { 
     $arr[$e->getName()] = (string)$e; 
    } 
    $result[] = $arr; 
    } 
} 

print_r($result); 

它打印

Array 
(
    [0] => Array 
     (
      [propA] => A1 
      [propB] => B1 
      [propC] => C1 
     ) 

    [1] => Array 
     (
      [propA] => A2 
      [propB] => B2 
      [propC] => C2 
     ) 

)