<?php 
 
include __DIR__ . "/../src/matrix.php"; 
 
use divengine\matrix; 
 
$F_AMOUNT = fn($r, $c, matrix $m) => $m->{$r + .1} * $m->{$r + .2}; 
$F_TOTAL = fn ($r, $c, matrix $m) => array_sum($m->vertical($c, 1, $r - 1)); 
$F_CUMUL = fn ($r, $c, matrix $m) => $r == 1 ? $m->get($r, $c - 1)  
                                             : $m->get($r - 1, $c) + $m->get($r, $c - 1); 
$table = new matrix([ 
    ["Product", "Price", "Count"], 
    ["Apple", 10, 2], 
    ["Banana", 35, 3], 
    ["Orange", 6, 10], 
]); 
 
$table->addColumn(); 
 
echo $table . "\n"; 
$table->{0.3} = "Amount"; 
echo $table . "\n"; 
 
// Fill the column with the product of the previous two columns 
$table->fillVertical(3, 1, 3, $F_AMOUNT); 
 
// Add a row with the sum of the previous rows 
$table->addRow(["Total", "", "", $F_TOTAL]); 
echo $table . "\n"; 
 
// Add a column with the sum of the previous columns 
$table->addColumn(); 
$table->{0.4} = "Cumul"; 
 
// Fill the column with the sum of the previous column 
$table->fillVertical(4, 1, 3, $F_CUMUL); 
echo $table . "\n"; 
 
// Change a value of the second row 
$table->{1.1} = 20; 
echo $table . "\n"; 
 
// Remove the second row 
$table->removeRow(1); 
echo $table . "\n"; 
 
// Show ranges 
print_r($table->vertical(1, 1, 2)); 
print_r($table->horizontal(1, 1, 2)); 
print_r($table->range(1, 1, 2, 2)); 
echo "\n"; 
 
// Serialize 
echo $table->format('serialize'); 
 
 
 |