2014-11-12 3 views
2

저는 지난 몇 시간 동안이 글에서 stuggling을 해왔고,이 배열에서 userid와 jobprocstatus의 값을 얻기 위해 열심히 노력했습니다.foreach 루프는 요소의 값을 얻습니다.

이것은 의 결과입니다. print_r ($ result);

stdClass Object ([accountid] => 6f3f55f6-67a1-11e4-a7c1-7e542e26bbf0 [userid] => 6f3f650b-67a1-11e4-a7c1-7e542e26bbf0 [cmd] => org.apache.cloudstack.api.command.admin.vm.DeployVMCmdByAdmin [jobstatus] => 1 [jobprocstatus] => 0 [jobresultcode] => 0 [jobresulttype] => object [jobresult] => stdClass Object ([virtualmachine] => stdClass Object ([id] => ccfbb592-ebfa-4f18-b861-4ae5e1a15426 [name] => VM-ccfbb592-ebfa-4f18-b861-4ae5e1a15426 [displayname] => VM-ccfbb592-ebfa-4f18-b861-4ae5e1a15426 [account] => admin [domainid] => ea3b19e6-67a0-11e4-a7c1-7e542e26bbf0 [domain] => ROOT [created] => 2014-11-11T17:39:31-0500 [state] => Running [haenable] => [zoneid] => 481b2bdf-90ba-4841-bd5a-f4fbf6027401 [zonename] => Toronto [hostid] => cc66aa5e-6be3-4f35-b538-87a9b09a6fc5 [hostname] => TOR-XENSRV61 [templateid] => ea41cab5-67a0-11e4-a7c1-7e542e26bbf0 [templatename] => CentOS 5.6(64-bit) no GUI (XenServer) [templatedisplaytext] => CentOS 5.6(64-bit) no GUI (XenServer) [passwordenabled] => [serviceofferingid] => 61ee4943-1af5-4168-9dee-fdd128fd58db [serviceofferingname] => Small Instance [cpunumber] => 1 [cpuspeed] => 500 [memory] => 512 [guestosid] => ea9ebb7a-67a0-11e4-a7c1-7e542e26bbf0 [rootdeviceid] => 0 [rootdevicetype] => ROOT [securitygroup] => Array () [nic] => Array ([0] => stdClass Object ([id] => 1145aa85-cf95-4215-b1a7-439166698c23 [networkid] => fdeaaf3a-2ee1-45e3-bc15-b325b2ea517c [networkname] => test [netmask] => 255.255.255.0 [gateway] => 192.168.168.1 [ipaddress] => 192.168.168.177 [isolationuri] => vlan://286 [broadcasturi] => vlan://286 [traffictype] => Guest [type] => Isolated [isdefault] => 1 [macaddress] => 02:00:6d:ba:00:16)) [hypervisor] => XenServer [instancename] => i-2-29-VM [tags] => Array () [affinitygroup] => Array () [displayvm] => 1 [isdynamicallyscalable] => 1 [ostypeid] => 142 [jobid] => 3a3c2e81-296b-4f00-906d-d4aac918487c [jobstatus] => 0)) [created] => 2014-11-11T17:39:32-0500 [jobid] => 3a3c2e81-296b-4f00-906d-d4aac918487c) 

내가 시도 무엇

<?php 

foreach ($result as $key => $value) { 
    echo "$key : $value <br>"; 

} 

출력

accountid : 6f3f55f6-67a1-11e4-a7c1-7e542e26bbf0 
userid : 6f3f650b-67a1-11e4-a7c1-7e542e26bbf0 
cmd : org.apache.cloudstack.api.command.admin.vm.DeployVMCmdByAdmin 
jobstatus : 1 
jobprocstatus : 0 
jobresultcode : 0 
jobresulttype : object 

단순히 그러나 매번 내가 시도,이 배열에서 사용자 ID 요소의 값을 얻으려고

echo "$result['userid']"; 

은행 화면이 표시되며 문제를 식별 할 수 없습니다.

귀하의 도움에 감사드립니다.

+0

그냥'$의 result' 얼마나 호기심을 위하여 인스턴스화 중입니까? 웹 서비스 호출이 반환 되었습니까? – robbmj

+0

예, 저는 편안한 API를 호출합니다 – Deano

+0

흥미 롭습니다. 예제 출력은 foreach 루프의 echo 문에 대한 결과입니까? – robbmj

답변

5

이 하나의 객체에 대한 객체

foreach ($result as $key => $value) { 
    echo $value->userid; 
} 

의 목록 트릭을 수행합니다

echo $value->userid; 

$value 객체이며, 객체의 속성을 얻기 위해 당신은 ->을 사용해야합니다 운영자.

당신이 개체 목록의 모든 public 속성을 얻고 싶은 경우에 : 당신은 당신의 사용자 ID에 액세스 할 수 있습니다이와

foreach ($result as $key => $obj) { 
    foreach (get_object_vars($obj) as $name => $value) { 
     echo "Object mapped to $key has property $name => $value"; 
    }  
} 
+0

+1 좋은 답변과 좋은 설명! – Rizier123

+0

도움 주셔서 감사합니다. 당신의 도움으로 고쳐주었습니다. – Deano

+0

@Deano 당신을 환영합니다. – robbmj

2

을 :

echo $result->userid; 
+0

도와 주셔서 감사합니다 Rizer123 :) – Deano

관련 문제