作为一个新手,我需要你帮助从simplexml对象获取多维数组。
假设我的数组如下:
只是为了得到想法:
这里$ data是一个simplexml对象,包含在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 :(得分: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
);
}
现在我不知道你在尝试用你的性别做什么,两个元素都是空的,这是什么意思?
答案 1 :(得分: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
)
)