請問我的程式碼如下所示,我大量使用collect()這個涵式包住一般的陣列做運算,
前輩覺得我這樣用很奇怪,但我不知道這樣寫對不對,只是覺得那些涵式好好用,
請問正常在Laravel框架下是怎麼運用那些Collection的涵式呢?
foreach ($itemData as $value) {
$amount[array_keys($value)[0]] = collect($timeData)->where(0, array_keys($value)[0])->count();
$money[array_keys($value)[0]] = collect($moneyData)->sum(array_keys($value)[0]);
}
因為不清楚你的資料格式長什麼樣...所以我也只是猜測而已,collections雖然很好用,但如果沒有做適合的安排,反而會讓程式碼變得難以閱讀和維護。。。
比如我看不太懂
collect($timeData)->where(0, array_keys($value)[0])->count();
想做什麼..??為什麼key的參數是0??..如果只是為了取第一個值..那麼使用first()或firstWhere()不就可以了??
或者 array_keys($value)[0]..似乎也可以使用collect($value)->keys()->first()來代替..語意會更清楚....
也許可以進一步的問問前輩覺得奇怪的點在那..趁機從前輩的觀點..看見自己的盲點....
我嘗試小改寫可能會這樣使用:
$amount=[];
collect($itemData)->each(function($item,$idx)use(&$amount){
$amount[collect($item)->keys()->first()]=collect($item)->count()???
.....
});
這樣用的確很奇怪。
因為一般利用 collect 。要簡略 for或是foreach
的連動處理。
使用foreach再搭配collect??
這不是很多此一舉?