php

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

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

foreach($sp_arr as $ar){             
 $ip=$ar["ip"]; 
};

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

foreach($sp_arr as &$ar){             
 $ar["ip"]="10.80.16.34"; 
};
VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

    Lanbilling 2, ошибка формирования файла из шаблона..

    Выскакивает «ну очень информативное сообщение» :

    Failed to process /usr/local/billing/templates/abc.concat /0/3T5LB3HGNITAMVUP.in /0/3T5LB3HGNITAMVUP.out, script error code 1

    Что всего лишь означает что нужно назначить права 777 на файл abc.

    VN:F [1.9.22_1171]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

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

      Дано:

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

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

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

      Решение:

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

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

      Читать далее

      VN:F [1.9.22_1171]
      Rating: 0.0/10 (0 votes cast)
      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)

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

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

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

        Снимок экрана от 2014-08-26 12:32:35

        Вот пример кода

        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'>";
        VN:F [1.9.22_1171]
        Rating: 0.0/10 (0 votes cast)
        VN:F [1.9.22_1171]
        Rating: 0 (from 0 votes)

          Жизнь замечательных грибов