необходимо создать пакет wddx со сложной структурой в переполнении стека

Я пытаюсь получить эту структуру в PHP.

<wddxPacket version='1.0'>
<header/>
<data>
<struct>
<var name='container_1'>
<struct>
<var name='var1'><string>xxxxx</string></var>
<var name='var2'><string>yyy</string></var>
</struct>
</var>
<var name='container_2'>
<struct>
<var name='var3'><string>nnnnn</string></var>
<var name='var4'><string>zzzzzz</string></var>
</struct>
</var>
</struct>
</data>

Мой код в PHP

$pq = wddx_packet_start("start");
wddx_add_vars($pq, "var1");
wddx_add_vars($pq, "var2");
etc..
$pqend = wddx_packet_end($pq);

Я могу создать простую структуру, но я не могу создать контейнеры со структурой внутри.
Я попытался сгенерировать пакет и передать его значение другому пакету. Нет результатов.

Есть идеи?

0

Решение

Вы можете проверить следующий фрагмент кода для вашей справки:

<?php
// example data
$arrBooks = array(array('id'=>1,'title'=>'XXXXXX'),
array('id'=>2,'title'=>'YYYYYY'),
array('id'=>3,'title'=>'ZZZZZZ')
);

// add header
$wddxst = wddx_packet_start('We build a start');

// add some variables
$rowCount   = count($arrBooks);
$fieldCount = 2;

wddx_add_vars($wddxst,'rowCount','fieldCount');

// add complex variable
$i = 0;
for($i=0;$i<$rowCount;$i++){
$varname = 'book'.$i;
$$varname = $arrBooks[$i];

wddx_add_vars($wddxst, $varname);
}

print wddx_packet_end($wddxst);

?>
1

Другие решения

Создайте свои контейнеры как ассоциативные массивы, например так:

$container_1 = [
'var1' => "xxxxx",
'var2' => "yyy"];

$container_2 = [
'var3' => "nnnnn",
'var4' => "zzzzzz"];

echo wddx_serialize_vars("container_1", "container_2");

Вывод (в формате):

<wddxPacket version='1.0'>
<header/>
<data>
<struct>
<var name='container_1'>
<struct>
<var name='var1'><string>xxxxx</string></var>
<var name='var2'><string>yyy</string></var>
</struct>
</var>
<var name='container_2'>
<struct>
<var name='var3'><string>nnnnn</string></var>
<var name='var4'><string>zzzzzz</string></var>
</struct>
</var>
</struct>
</data>
</wddxPacket>
1

По вопросам рекламы [email protected]