Изменение массива в цикле foreach

Довольно обычно для прохождения каждого элемента массива используется конструкция вида:

Однако что если нужно нам поменять значение в массиве во время цикла? Вот тут я затупил минут на 15. Оказывается нужно добавить знак & в foreach. Тогда код будет выглядеть следующим образом:

Автоматическая «прибивка» пользователей к портам устройств в LanBilling 2 путем опроса MAC свичей

Дано:

1) LanBilling в которой ведется журнал авторизации пользователей по логину с указанием MAC адреса устройства с которого прошла авторизация.

2) В LanBilling нет привязки пользователя ни к порту, ни к сетевому устройству.

Задача: опросить все сетевые устройства, узнать все MAC адреса и порты свичей на которых «висят» пользователи

Решение:

— получаем у свичей информацию о MAC адресах на портах
— ищем этот MAC  в истории авторизации LanBilling — получаем учетку
— «прибиваем» эту учетку в LanBilling к конкретному устройству, к конкретному порту.

Вуаля! Теперь когда пользователь звонит «ничего не работает», мы знаем на каком свиче и на каком порту он сидит. Ура товарищи!

» Читать далее

Использование Pchart для построения графиков на PHP

Классы Pchart представляют очень простой способ отрисовки графиков на PHP. Кроме того, в комплекте поставки идет «песочница», где можно визуально настроить параметры и посмотреть какой код нужно использовать для его построения,ну и собственно посмотреть как будет выглядеть примерно ваш график.

Вот пример графика

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
include("../../../../class/pchart/pData.class.php");
include("../../../../class/pchart/pDraw.class.php");
include("../../../../class/pchart/pImage.class.php");
$myData = new pData();  
 
while($date <= $dtend){
    $kof=1;
    $date = date('Y-m-d', strtotime($date.' + '.$kof.' days'));
    $ruser=GetAllStatByDate($date,$grp,$agnt,$lb);
    $activeusers=$ruser["activeusers"];
    $allaccountsb10=$ruser["allaccountsb10"];
    $allaccountsb1=$ruser["allaccountsb1"];
    $atherblock=$ruser["atherblock"];
    $allaccounts=$ruser["allaccounts"];
// добавляем данные
    $myData->addPoints($activeusers,"activeusers");
    $myData->addPoints($allaccountsb10,"allaccountsb10");
    $myData->addPoints($allaccountsb1,"allaccountsb1");
    $myData->addPoints($allaccounts,"allaccounts");
    $myData->addPoints($date,"Month");
};
// синонимы
$myData->setSerieDescription("activeusers","Активных учеток");
$myData->setSerieDescription("allaccountsb10","Блокировка 10");
$myData->setSerieDescription("allaccountsb1","Блокировка по балансу");
$myData->setSerieDescription("allaccounts","Всего учеток");
// что в низу
$myData->setAbscissa("Month");
// сто слева
$myData->setAxisUnit(1," Чел");
 
//задаем цвета графиков
$serieSettings = array("R"=>51,"G"=>255,"B"=>0,"Alpha"=>150);
$myData->setPalette("activeusers",$serieSettings);
 
$serieSettings = array("R"=>255,"G"=>38,"B"=>0,"Alpha"=>150);
$myData->setPalette("allaccountsb10",$serieSettings);
 
$serieSettings = array("R"=>255,"G"=>200,"B"=>0,"Alpha"=>150);
$myData->setPalette("allaccountsb1",$serieSettings);
 
$serieSettings = array("R"=>2,"G"=>11,"B"=>1,"Alpha"=>150);
$myData->setPalette("allaccounts",$serieSettings);
 
 
 
$myPicture = new pImage(1250,500,$myData); // <-- Размер холста
 
$Settings = array("StartR"=>219, "StartG"=>231, "StartB"=>139, "EndR"=>1, "EndG"=>138, "EndB"=>68, "Alpha"=>50);
$myPicture->drawGradientArea(0,0,1250,500,DIRECTION_VERTICAL,$Settings);  
  
$myPicture->setFontProperties(array("FontName"=>"../../../../fonts/calibri.ttf","FontSize"=>8));
$myPicture->setGraphArea(50,20,1230,480); // <-- Размещение графика на холсте
$myPicture->drawScale();
$myPicture->drawBestFit(array("Alpha"=>40)); // <-- Прямая статистики
 
$myPicture->drawSplineChart();
$myPicture->drawPlotChart(array("DisplayValues"=>TRUE,"PlotBorder"=>TRUE,"BorderSize"=>0,"Surrounding"=>-60,"BorderAlpha"=>50)); // <-- Точки на графике
$myPicture->drawLegend(700,10,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL));// <-- Размещение легенды
 
 
$unique = date("Y.m.d_H.i.s");
$gsFilename_Traffic = "traffic_".$unique.".png";
 
$myPicture->Render('../../../../files/'.$gsFilename_Traffic);
echo "<img src='files/$gsFilename_Traffic'>";