2015-11-12 2 views
1

Я получаю информацию от Zabbix Api с библиотекой PHP. На данный момент я получаю «LastValue» из JSon массива:Zabbix Чтение Api

try { 
    // connect to Zabbix-API 
    $api = new ZabbixApi($api_url, $username, $password); 


$params = array( 

          'groupids' => '2', 
          'real_items'  =>TRUE,      
          'monitored_items' =>TRUE, 
          'search' => array('name' => 'Disk root used p'),                  
          'selectFunctions' => 'extend', 
          'output'   => 'extend', 
          'sortfield'   => 'name', 
          'limit'    => '1' 

          ); 



    $trends = $api->itemGet($params); // get data from api 

    $names = array(); 
    foreach($trends as $trend) {  // loop through the returned data 
     $names[] = $trend->lastvalue; 

    } 
//print_r($names); 

} catch(Exception $e) { 

    // Exception in ZabbixApi catched 
    echo $e->getMessage(); 
} 

Но теперь я хочу, чтобы получить «LastValue» плюс «имя» из пункта в этом массиве, например, так: «имя» + "LastValue". Как я могу получить оба из них в свой массив $names[]?

+0

В вашем Еогеасп, вы можете сделать 'Еогеасп ($ ТЕНДЕНЦИИ как $ trendKey => $ trendValue) {...}', это позволяет получить индекс , будь то 1 (числовой) или один (ассоциативный) и использовать оба. Например '$ arr = array ('name'] => 'value');' '$ trendKey' будет' 'name'', а' $ trendValue' будет '' value'' - думая об этом, добавлю ответ;) –

ответ

1

Вот мой ответ из моих комментариев, надеюсь, это то, что вы ищете!

$trends = $api->itemGet($params); 
$names = array(); 
foreach($trends as $trendKey => $trendValue) 
{ 
    $names[$trendKey] = $trendValue; 
} 

#Test the names array 
foreach ($names as $nameKey => $nameValue) 
{ 
    print("{$nameKey} = {$nameValue}<br />"); 
} 

Возвращаемое значение:

groupids = 2 
real_items = TRUE 
... 
sortfield = name 
limit = 1 
Смежные вопросы