2015-06-05 79 views
-4

我可以從遠程設備獲取信息,但輸出是一個相當大的數組,我在格式化語法時遇到了問題。我的數組輸出看起來像這樣;從多維數組中迴應值

array(420) { [0]=> object(stdClass)#2 (3) { ["Name"]=> string(99) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\CallsActive" ["Value"]=> int(3) ["CStatus"]=> int(1) } [1]=> object(stdClass)#3 (3) { ["Name"]=> string(102) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\CallsCompleted" ["Value"]=> int(172) ["CStatus"]=> int(1) } [2]=> object(stdClass)#4 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 1 Status" ["Value"]=> int(3) ["CStatus"]=> int(1) } [3]=> object(stdClass)#5 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 2 Status" ["Value"]=> int(3) ["CStatus"]=> int(1) } [4]=> object(stdClass)#6 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 3 Status" ["Value"]=> int(3) ["CStatus"]=> int(1) } [5]=> object(stdClass)#7 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 4 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [6]=> object(stdClass)#8 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 5 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [7]=> object(stdClass)#9 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 6 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [8]=> object(stdClass)#10 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 7 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [9]=> object(stdClass)#11 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 8 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [10]=> object(stdClass)#12 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 9 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [11]=> object(stdClass)#13 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 10 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [12]=> object(stdClass)#14 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 11 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [13]=> object(stdClass)#15 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 12 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [14]=> object(stdClass)#16 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 13 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [15]=> object(stdClass)#17 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 14 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [16]=> object(stdClass)#18 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 15 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [17]=> object(stdClass)#19 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 16 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [18]=> object(stdClass)#20 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 17 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [19]=> object(stdClass)#21 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 18 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [20]=> object(stdClass)#22 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 19 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [21]=> object(stdClass)#23 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 20 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [22]=> object(stdClass)#24 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 21 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [23]=> object(stdClass)#25 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 22 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [24]=> object(stdClass)#26 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 23 Status" ["Value"]=> int(2) ["CStatus"]=> int(1) } [25]=> object(stdClass)#27 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 24 Status" ["Value"]=> int(4) ["CStatus"]=> int(1) } [26]=> object(stdClass)#28 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 25 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [27]=> object(stdClass)#29 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 26 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [28]=> object(stdClass)#30 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 27 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [29]=> object(stdClass)#31 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 28 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [30]=> object(stdClass)#32 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 29 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [31]=> object(stdClass)#33 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 30 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [32]=> object(stdClass)#34 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\Channel 31 Status" ["Value"]=> int(0) ["CStatus"]=> int(1) } [33]=> object(stdClass)#35 (3) { ["Name"]=> string(105) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\DatalinkInService" ["Value"]=> int(1) ["CStatus"]=> int(1) } [34]=> object(stdClass)#36 (3) { ["Name"]=> string(108) "\\ip_address\Cisco MGCP PRI Device(gateway01.domain.com::S0_SU0_DS1-0)\OutboundBusyAttempts" ["Value"]=> int(0) ["CStatus"]=> int(1) } [35]=> object(stdClass)#37 (3) { ["Name"]=> string(99) "\\ip_address\Cisco MGCP PRI Device(gateway02.domain.com::S0_SU0_DS1-0)\CallsActive" ["Value"]=> int(0) ["CStatus"]=> int(1) } [36]=> object(stdClass)#38 (3) { ["Name"]=> string(102) "\\ip_address\Cisco MGCP PRI Device(gateway02.domain.com::S0_SU0_DS1-0)\CallsCompleted" ["Value"]=> int(109) ["CStatus"]=> int(1) } [37]=> object(stdClass)#39 (3) 

我感興趣的是獲得整數爲CallsActive爲gateway02。所以,我知道這個語法將允許我打印所有對象「Name」;

foreach($devices as $first) 
     { 
     $Name = $first->Name; 
     echo $Name; 
     } 

你如何解析這個數組?

+1

如果'$ first-> Name'是名稱,那麼'$ first-> Value'是值。爲了獲得你正在尋找的一個值,你需要循環遍歷每一個,就像你正在做的那樣,當'$ Name'是你期望的那個值時,使用這個值。 –

+0

這正是我在我的答案中所做的。我們相信 – RightClick

回答

1
foreach($devices as $device){ 
     if((strpos($device->Name,'gateway02') !== false)&& (strpos($device->Name,'CallsActive') !== false)){ 
       echo $device->Name . " : " . $device->Value; 
     } 
} 

使用strpos檢查名稱是否包含這些值,如果有,請用它做些事情。

+0

感謝您的幫助,RC和JK。這不是我期待的答案,但它是有道理的。 – Kimomaru

+1

數據結構不是很好。如果您可以提供過濾器,那麼當您拉動數組時,您可以限制返回的數組以僅顯示您關心的記錄。如果可能的話,這將是一個更好的方法。 – RightClick

+0

我同意,當我看着它時有點困惑,因爲我不習慣這樣看待它。當我看到使用strpos的解決方案時,我有一種想法,那就是這種情況將如何發生。 – Kimomaru