我有一个包含有关人员信息的对象:
name, age, type
对于xml请求,我需要这样的人员数组:
<persons itc=3>
<person id=1 type=H age=30 />
<person id=2 type=H age=35 />
<person id=3 type=H age=6 />
</persons>
我想自动创建它,例如使用foreach,xml结中的所有属性都标有&#34; @&#34;之前,以便在此之后调用的函数知道如何构建xml:
foreach($object->getPersons as $person) {
$array['persons'] = array(
'person' = array(
'@id' => $person->getId(),
'@type' => $person->getType(),
'@age' => $person->getAge(),
)
)
}
但是,据我所知,不可能有一个具有多个具有相同名称的键的数组,逻辑......! Bute如何创建我的对象的xml-schema?有人能给我一个暗示吗? 谢谢!
答案 0 :(得分:1)
如果您打算将所有数组命名为同名,为什么要命名它们? 不要创建关联数组,只需创建一个普通的索引数组,如:
$array['persons'] = array();
foreach($object->getPersons as $person) {
$array['persons'][] = array( "@id" => $person->getId(),
"@type" => $person->getType(),
"@age" => $person->getAge() );
}
答案 1 :(得分:1)
$array
变量的多维数组应该如下所示:
foreach($object->getPersons as $person) {
$array['persons'][] = array( // [] for auto increment.
'person' = array(
'@id' => $person->getId(),
'@type' => $person->getType(),
'@age' => $person->getAge(),
)
)
}
然后,您将使用
获取每个人的信息$array['persons'][1] //for example.
答案 2 :(得分:1)
使用多维数组
foreach($object->getPersons as $person) {
$array['persons'] = array(
Array(
'person' = array( '@id' => $person->getId(), '@type' => $person->getType(), '@age' => $person->getAge(),
),
Array(
'person' = array( '@id' => $person->getId(), '@type' => $person->getType(), '@age' => $person->getAge(),
),
)
)
}
答案 3 :(得分:1)
我建议,您要创建一个xml,使用这些值并直接创建XML。使用SimpleXMLElement
执行此操作。您没有提供示例对象虚拟数据,所以我只是创建一个示例:
$persons = array(
(object) array('id' => 1, 'name' => 'Person 1', 'age' => 200, 'type' => 'H'),
(object) array('id' => 2, 'name' => 'Person 2', 'age' => 300, 'type' => 'B'),
);
$count = count($persons);
$xml = new SimpleXMLElement('<persons/>', LIBXML_NOEMPTYTAG);
$xml->addAttribute('itc', $count);
foreach($persons as $person) {
$person_node = $xml->addChild('person', null);
foreach($person as $attribute => $value) {
$person_node->addAttribute($attribute, $value);
}
}
echo htmlentities($xml->asXML());
应输出(基于虚拟数据):
<?xml version="1.0"?>
<persons itc="2">
<person id="1" name="Person 1" age="200" type="H"/>
<person id="2" name="Person 2" age="300" type="B"/>
</persons>