【发布时间】:2014-05-20 17:36:27
【问题描述】:
我正在尝试通过以下 SOAP 请求提取从 vCenter 服务器中提取的虚拟机名称。虽然我得到了结果(请参阅下面的 var_dump),但我不知道如何放入循环来获取名称,因为有许多嵌入式数组,我尝试的所有操作要么返回错误,要么返回 Array.我很欣赏这可能是一个相当简单的问题,但我就是想不通。
这是我试图获取的下面代码摘录中的名称值。
$request->specSet = array (
'propSet' => array (
array ('type' => 'VirtualMachine', 'all' => 0, 'pathSet' => array('name','runtime.powerState', 'config.hardware.numCPU', 'config.hardware.memoryMB')),
),
PHP 页面
$ss1 = new soapvar(array ('name' => 'FolderTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null);
$ss2 = new soapvar(array ('name' => 'DataCenterVMTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null);
$a = array ('name' => 'FolderTraversalSpec', 'type' => 'Folder', 'path' => 'childEntity', 'skip' => false, $ss1, $ss2);
$ss = new soapvar(array ('name' => 'FolderTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null);
$b = array ('name' => 'DataCenterVMTraversalSpec', 'type' => 'Datacenter', 'path' => 'vmFolder', 'skip' => false, $ss);
$res = null;
try
{
$request = new stdClass();
$request->_this = $ret->propertyCollector;
$request->specSet = array (
'propSet' => array (
array ('type' => 'VirtualMachine', 'all' => 0, 'pathSet' => array('name','runtime.powerState', 'config.hardware.numCPU', 'config.hardware.memoryMB')),
),
'objectSet' => array (
'obj' => $ret->rootFolder,
'skip' => false,
'selectSet' => array (
new soapvar($a, SOAP_ENC_OBJECT, 'TraversalSpec'),
new soapvar($b, SOAP_ENC_OBJECT, 'TraversalSpec'),
),
)
);
$res = $client->__soapCall('RetrieveProperties', array((array)$request));
}
catch (Exception $e)
{
echo $e->getMessage();
}
Var_dump()
object(stdClass)#46 (1) {
["returnval"]=>
array(2) {
[0]=>
object(stdClass)#47 (2) {
["obj"]=>
object(stdClass)#48 (2) {
["_"]=>
string(5) "vm-35"
["type"]=>
string(14) "VirtualMachine"
}
["propSet"]=>
array(4) {
[0]=>
object(stdClass)#49 (2) {
["name"]=>
string(24) "config.hardware.memoryMB"
["val"]=>
int(128)
}
[1]=>
object(stdClass)#50 (2) {
["name"]=>
string(22) "config.hardware.numCPU"
["val"]=>
int(1)
}
[2]=>
object(stdClass)#51 (2) {
["name"]=>
string(4) "name"
["val"]=>
string(7) "test123"
}
[3]=>
object(stdClass)#52 (2) {
["name"]=>
string(18) "runtime.powerState"
["val"]=>
string(10) "poweredOff"
}
}
}
[1]=>
object(stdClass)#53 (2) {
["obj"]=>
object(stdClass)#54 (2) {
["_"]=>
string(5) "vm-36"
["type"]=>
string(14) "VirtualMachine"
}
["propSet"]=>
array(4) {
[0]=>
object(stdClass)#55 (2) {
["name"]=>
string(24) "config.hardware.memoryMB"
["val"]=>
int(128)
}
[1]=>
object(stdClass)#56 (2) {
["name"]=>
string(22) "config.hardware.numCPU"
["val"]=>
int(1)
}
[2]=>
object(stdClass)#57 (2) {
["name"]=>
string(4) "name"
["val"]=>
string(7) "test456"
}
[3]=>
object(stdClass)#58 (2) {
["name"]=>
string(18) "runtime.powerState"
["val"]=>
string(10) "poweredOff"
}
}
}
}
}
【问题讨论】:
标签: php arrays loops soap multidimensional-array