В статье "Mikrotik Router OS API PHP. Как извлечь данные из Mikrotik Routerboard?" мы научились получать данные от устройств Mikrotik Routerboard. Теперь приступим к обработке полученных данных.
Пишем код:
<?php
require('routeros_api.class.php');
$API = new routeros_api();
if ($API->connect('192.168.4.253', 'ubnt', 'ubnt')) {
print 'Соединение установлено';
$API->write('/interface/getall');
$INTERFACE = $API->read(false);
$ARRAY = $API->parse_response($INTERFACE);
print_r($INTERFACE);
print "<br><br>";
print_r($ARRAY);
$API->disconnect();
}
else {
print "Ошибка соединения";
}
?>
Разбираем код:
Вызываем метод parse_response, передав в него $INTERFACE для обработки. Результат работы метода поместим в $ARRAY:
$ARRAY = $API->parse_response($INTERFACE);
Выведем полученные и обработанные данные на экран:
print_r($INTERFACE);
print "<br><br>";
print_r($ARRAY);
Рис.1. Значения полученных и обработанных данных.
На рисунке 1 мы видим, что полученные данные - это простой массив, состоящий из 46 элементов. В результате обработки мы получили массив, состоящий из 5 элементов. Каждый элемент - это ассоциативный массив, к которому можно обращаться по ключам.
Выведем на экран по одному элементу из массивов:
print $INTERFACE[2];
print "<br><br>";
print $ARRAY[0][name];
Рис.2. Вывод элементов массива.
На рисунке 2 видно, что вывод элемента из массива $INTERFACE, выдал результат =name=ether1, а вывод из $ARRAY выдал только имя устройства ether1. Работать с массивом $ARRAY гораздо удобней, поэтому с его помощью выведем список интерфейсов.
Применим цикл foreach, который будет извлекать элементы из массива и заносить в переменную $x, выведем переменную х на экран.
foreach ($ARRAY as $x)
{
print "<p>";
print_r($x);
print "</p>";
}
Рис.3. Результат поэлементного вывода массива $ARRAY.
Выведем список интерфейсов в таблице.
print "<table>";
print "<tr bgcolor='#fee3ad' border='1'>";
print "<td>";
print "name";
print "</td>";
print "<td>";
print "type";
print "</td>";
print "<td>";
print "mtu";
print "</td>";
print "<td>";
print "l2mtu";
print "</td>";
print "</tr>";
foreach ($ARRAY as $x)
{
print "<tr border='1'>";
print "<td>";
print $x["name"];
print "</td>";
print "<td>";
print $x["type"];
print "</td>";
print "<td>";
print $x["mtu"];
print "</td>";
print "<td>";
print $x["l2mtu"];
print "</td>";
print "</tr>";
}
print "</table>";
Рис.4. Вывод данных об устройствах в таблице.
В данном примере, при помощи цикла foreach извлекали по одному элементу в переменную x. В результате получался ассоциативный массив, к которому мы обращались по ключам.
Евгений Рудченко специально для ASP24.




