相关文章推荐
淡定的蚂蚁  ·  CefSharp ...·  1 年前    · 
阳刚的小马驹  ·  javascript - ...·  1 年前    · 
强健的小马驹  ·  xbutton1 - OSCHINA - ...·  1 年前    · 

我要計算表格最下方的小計,$list是從資料庫撈出來的所有資料

YaLinqo套件 是用php模仿c#的Linq套件中,效能相對比較好的套件,不過該套件無法直接用在資料庫上~

想詢問各位大大們,如果計算小計的方式希望透過一個from($list)->select(...)解決的話,語法要如何呈現?

這是我目前正在使用的code

require_once 'libraries/YaLinqo/Linq.php';
// ...(略)...
while ($row = mysqli_fetch_array($rst, MYSQLI_ASSOC)) {
    $list[] = $row;
$totalRow = [
    'ps_year'=>'小計:'
    ,'ttlmoneysum' => from($list)->sum('$v["ttlmoneysum"]')
    ,'rst_moneysum' => from($list)->sum('$v["rst_moneysum"]')
    ,'stunosum' => from($list)->sum('$v["stunosum"]')
    ,'rst_stunosum' => from($list)->sum('$v["rst_stunosum"]')
    ,'licensenosum' => from($list)->sum('$v["licensenosum"]')
    ,'nomoneylicnosum' => from($list)->sum('$v["nomoneylicnosum"]')
    ,'cnt' => from($list)->sum('$v["cnt"]')
$list[] = $totalRow;
// ...(略)...

在計算小計的部分嘗試用select來一次處理,看能不能改善效能,但會出現找不到sum()的錯誤...

// 這段做法會出現 Call to undefined function sum() 錯誤,明明上方做法sum沒問題啊@@ $totalRow = from($list)->select('[ "ps_year"=>"小計:" ,"ttlmoneysum"=>sum($v["ttlmoneysum"]) ,"rst_moneysum"=>sum($v["rst_moneysum"]) ,"stunosum"=>sum($v["stunosum"]) ,"rst_stunosum"=>sum($v["rst_stunosum"]) ,"licensenosum"=>sum($v["licensenosum"]) ,"nomoneylicnosum"=>sum($v["nomoneylicnosum"]) ,"cnt"=>sum($v["cnt"]) ]')->toArrayDeep();

目前看起來好像沒辦法一個select就處理掉,有幾個替代的思路可以參考
1.額外加入一個假欄位對他做group處理後再selectMany回來了
2.使用 MySQL GROUP ROLLUP 自動處裡小計問題

$products = array( array('name' => 'Keyboard', 'catId' => 'hw', 'quantity' => 10, 'id' => 1), array('name' => 'Mouse', 'catId' => 'hw', 'quantity' => 20, 'id' => 2), array('name' => 'Monitor', 'catId' => 'hw', 'quantity' => 0, 'id' => 3), array('name' => 'Joystick', 'catId' => 'hw', 'quantity' => 15, 'id' => 4), array('name' => 'CPU', 'catId' => 'hw', 'quantity' => 15, 'id' => 5), array('name' => 'Motherboard', 'catId' => 'hw', 'quantity' => 11, 'id' => 6), array('name' => 'Windows', 'catId' => 'os', 'quantity' => 666, 'id' => 7), array('name' => 'Linux', 'catId' => 'os', 'quantity' => 666, 'id' => 8), array('name' => 'Mac', 'catId' => 'os', 'quantity' => 666, 'id' => 9), $categories = array( array('name' => 'Hardware', 'id' => 'hw'), array('name' => 'Operating systems', 'id' => 'os'), $result = from($products)->sum(function($v) { return $v['quantity']; print_r($result);

result

你是只有 sum 無法使用嗎

還是全部的 function 都是這樣呢