PHP code example of xp-forge / pivot
1. Go to this page and download the library: Download xp-forge/pivot library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xp-forge / pivot example snippets
["2015-05-10", "00:00:48", "GOOD", 200, 95, "ETag: 214ceb4b-980-3a7bbd9630480"]
use io\streams\{TextReader, FileInputStream};
use util\data\PivotCreation;
$pivot= (new PivotCreation())
->groupingBy(2) // category
->groupingBy(3) // code
->spreadingBy(0) // date
->summing(4, 'bytes') // bytes
->create()
);
$reader= new TextReader(new FileInputStream('measures.log'));
while (null !== ($line= $reader->readLine())) {
$pivot->add(sscanf($line, '%[0-9-] %[0-9:] %[^:]: %d %d bytes (%[^)])'));
}
$count= $pivot->count('OK'); // 2
$count= $pivot->count(); // 6
$count= $pivot->records('2015-05-10', 'OK'); // 1
$count= $pivot->records('2015-05-10'); // 4
$transferred= $pivot->column('2015-05-10', 'OK')['bytes']; // 100
$transferred= $pivot->column('2015-05-10')['bytes']; // 714
$transferred= $pivot->sum('OK')['bytes']; // 202
$transferred= $pivot->sum()['bytes']; // 1072
$average= $pivot->average('OK')['bytes']; // 101.0
$average= $pivot->average()['bytes']; // 178.7
$rows= $pivot->rows(); // ['OK', 'GOOD', 'ERROR']
// OK: 2 / 6 = 33.3%
// GOOD: 1 / 6 = 16.7%
// ERROR: 3 / 6 = 50.0%
$total= $pivot->count();
foreach ($rows as $cat) {
$count= $pivot->count($cat);
printf("%s: %d / %d = %.1f%%\n", $cat, $count, $total, $count / $total * 100);
}
// client: 1
// server: 2
foreach ($pivot->rows('ERROR') as $code) {
printf("ERROR %s: %dx\n", $row, $pivot->count('ERROR', $code));
}
$columns= $pivot->columns(); // ['2015-05-10', '2015-05-11']
// 2015-05-10: 714 / 1072 bytes = 66.6%
// 2015-05-11: 358 / 1072 bytes = 33.4%
$total= $pivot->total()['bytes'];
foreach ($columns as $date) {
$bytes= $pivot->column($date)['bytes'];
printf("%s: %d / %d bytes = %.1f%%\n", $date, $bytes, $total, $bytes / $total * 100);
}