Есть веб сервис. В нем есть элемент ArrayProperty который является массивом.
<xsd:element name="Parametr" type="tns:tParametr" minOccurs="1" maxOccurs="unbounded" nillable="true"></xsd:element>
веб сервису передаются данные
-<SimpleGood EAN13="4606144005374">
-<ArrayProperty>
<Parametr Value="50гр" Property="вес"/>
</ArrayProperty>
</SimpleGood>
-<SimpleGood EAN13="7891024128954">
-<ArrayProperty>
<Parametr Value="тройное действие" Property="название зубной пасты"/><Parametr Value="100гр" Property="вес"/></ArrayProperty>
</SimpleGood>
Структура создается объектными средствами 1с, по четкому описанию wsdl и проверяется на момент отправки.
Сервер получает эти данные, я во время обработки сохраняю полученные данные
$masProperty=$SimpleGood->ArrayProperty;
fwrite($fp, "vx=".var_export($masProperty,true).chr(10).chr(13));
vx=stdClass::__set_state(array(
'Parametr' =>
stdClass::__set_state(array(
'Property' => 'вес',
'Value' => '50гр',
)),
))
vx=stdClass::__set_state(array(
))
vx=stdClass::__set_state(array(
'Parametr' =>
array (
0 =>
stdClass::__set_state(array(
'Property' => 'название зубной пасты',
'Value' => 'тройное действие',
)),
1 =>
stdClass::__set_state(array(
'Property' => 'вес',
'Value' => '100гр',
)),
),
))
И получается на мой взгляд какая то фигня. Структура данных в случае если в массиве лишь одно значение свойств и если их несколько выглядит существенно по разному. В случаее с двумя и более значениями создается вложенный массив, что не происходит при 1 элементе в массиве. Как заставить пхп понимать 1 элемент в массиве как массив, а не как значение?