Многоизмерни масиви в php - има два масива с едно и също име?

Основно изграждане на SOAP клиент и част от необходимия вход е форматиран така:

<Attributes>
    <Attribute>
         <AttributeType>HomeType</AttributeType>
         <Value>duplex</Value>
    </Attribute>
    <Attribute>
        <AttributeType>Bedrooms</AttributeType>
        <Value>2</Value>
    </Attribute>
    <Attribute>
        <AttributeType>Bathrooms</AttributeType>
        <Value>2</Value>
    </Attribute>
</Attributes>

Това е публикувано чрез масив:

$homeType = array (

'AttributeType' => 'HomeType',
'Value' => $_POST['hometype']
);
$bedrooms = array (
'AttributeType' => 'Bedrooms',
'Value' => $_POST['bedrooms']
);
$bathrooms = array(
'AttributeType' => 'Bathrooms',
'Value' => $_POST['bathrooms']
);
$attributes = array (
'Attribute' => $homeType,
'Attribute' => $bedrooms,
'Attribute' => $bathrooms
);

И както можете да си представите, всички връщания от масива са последният атрибут, така че xml изглежда така:

<Attributes>
    <Attribute>
        <AttributeType>Bathrooms</AttributeType>
        <Value>2</Value>
    </Attribute>
</Attributes>

Не мога да измисля никакъв практичен начин да заобиколя това, тъй като атрибутите могат да броят до 30-50, така че не искам да ги въвеждам цифрово, особено след като масивът се извиква само като:

'Attributes' => $attributes,

Всяка помощ ще бъде високо оценена!


person rickyduck    schedule 11.07.2011    source източник


Отговори (1)


Не трябва ли просто да използвате масив? $attributes = array( 'Attribute' => array($homeType, $bedrooms, $bathrooms) );

person Stefan H Singer    schedule 11.07.2011
comment
Ако това се случи, изходът ще бъде само: ‹Attributes› ‹Attribute› ‹AttributeType›HomeType‹/AttributeType› ‹Value›duplex‹/Value› ‹AttributeType›Bedrooms‹/AttributeType› ‹Value›2‹/V alue› ‹AttributeType› Bathrooms‹/AttributeType› ‹Value›2‹/Value› ‹/Attribute› ‹/Attributes› - което означава, че SOAP извикването ще се счупи - person rickyduck; 11.07.2011
comment
Съжалявам, Стефане, връщам всичко назад! По някаква причина, която работи перфектно, SOAP сървърът трябва автоматично да постави всеки масив в XML родителя. Освен това, въпреки че отговорите на въпросите - SOAP сървърът генерира XML, извикването се извършва чрез услугата SOAP клиент на PHP5! Наздраве отново, никога не бих си помислил за това. - person rickyduck; 11.07.2011
comment
Много сте добре дошли :) Чувствайте се повече от добре дошли да отбележите и това като отговор, наздраве! - person Stefan H Singer; 11.07.2011
comment
В очакване на глупавия срок! Ще стане за около две минути ;) - person rickyduck; 11.07.2011