multidimensional - Pasar matriz a la función SOAP en PHP
php soap get functions (2)
Puede usar esta función -v para convertir una matriz en un árbol de objetos:
function array_to_objecttree($array) {
if (is_numeric(key($array))) { // Because Filters->Filter should be an array
foreach ($array as $key => $value) {
$array[$key] = array_to_objecttree($value);
}
return $array;
}
$Object = new stdClass;
foreach ($array as $key => $value) {
if (is_array($value)) {
$Object->$key = array_to_objecttree($value);
} else {
$Object->$key = $value;
}
}
return $Object;
}
Al igual que:
$data = array(
''GetResultListRequest'' => array(
''Filters'' => array(
''Filter'' => array(
array(''Name'' => ''string'', ''Value'' => ''string''), // Has a numeric key
array(''Name'' => ''string'', ''Value'' => ''string''),
)
)
)
);
$Request = array_to_objecttree($data);
Saludos,
Parece que no puedo encontrar una manera de crear una solicitud de función con matriz como argumento. Por ejemplo, cómo hago este tipo de solicitud usando PHP SoapClient:
<GetResultList>
<GetResultListRequest>
<Filters>
<Filter>
<Name>string</Name>
<Value>string</Value>
</Filter>
<Filter>
<Name>string</Name>
<Value>string</Value>
</Filter>
</Filters>
</GetResultListRequest>
</GetResultList>
¿Es posible invocar esta función sin crear ninguna clase adicional (solo con matrices)? Si no, ¿cuál es la forma más compacta de llamarlo?
Por ejemplo, puedes probar esto:
$data1 = new SampleStruct();
$data1->title="Hello world";
$data1->description="This is a sample description.";
$data2 = new SampleStruct();
$data2->title="Hello world 2";
$data2->description="This is a sample description 2.";
$client->__soapCall("sampleFunction", array(
new SoapParam(new SoapVar(array($data1, $data2) , SOAP_ENC_ARRAY,
"SampleStruct_Array", "http://www.w3.org/2001/XMLSchema"),
"theSampleFunctionParamName")
));