Я получаю информацию от Zabbix Api с помощью библиотеки PHP. В настоящий момент я получаю "lastvalue" из json Array:
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" плюс "имя" элемента в этом массиве, например: "name" + "lastvalue". Как я могу получить оба из них в свой массив $names[]
?
Вот мой ответ из моих комментариев, надеюсь, это то, что вы ищете!
$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
foreach($trends as $trendKey => $trendValue) { ... }
, это позволяет получить индекс, будь то 1 (числовой) или один (ассоциативный), и использовать оба. Например,$arr = array( 'name' ] => 'value' );
$trendKey
будет'name'
а$trendValue
будет'value'
- Подумав об этом, я добавлю ответ;)