你知道Laravel Collection的實(shí)際使用場(chǎng)景有哪些嗎?

下面由laravel教程欄目給大家介紹laravel Collection的實(shí)際使用場(chǎng)景,希望對(duì)需要的朋友有所幫助!

laravel

<?php // 引入package require __DIR__ . '/vendor/autoload.php';  $orders = [[     'id'            =>      1,     'user_id'       =>      1,     'number'        =>      '13908080808',     'status'        =>      0,     'fee'           =>      10,     'discount'      =>      44,     'order_products'=> [         ['order_id'=>1,'product_id'=>1,'param'=>'6寸','price'=>555.00,'product'=>['id'=>1,'name'=>'蛋糕名稱','images'=>[]]],         ['order_id'=>1,'product_id'=>1,'param'=>'7寸','price'=>333.00,'product'=>['id'=>1,'name'=>'蛋糕名稱','images'=>[]]],     ], ]];
$sum = 0; foreach ($orders as $order) {     foreach ($order['order_products'] as $item) {         $sum += $item['price'];     } } echo $sum;
$sum = collect($orders)->map(function($order){     return $order['order_products']; })->flatten(1)->map(function($order){     return $order['price']; })->sum();  echo $sum;
$sum = collect($orders)->flatMap(function($order){     return $order['order_products']; })->pluck('price')->sum(); echo $sum;
$sum = collect($orders)->flatMap(function($order){     return $order['order_products']; })->sum('price');
// 帶格式化數(shù)組 $gates = [     'BaiYun_A_A17',     'BeiJing_J7',     'ShuangLiu_K203',     'HongQiao_A157',     'A2',     'BaiYun_B_B230' ];  // 新數(shù)組 $boards = [     'A17',     'J7',     'K203',     'A157',     'A2',     'B230' ];
$res = []; foreach($gates as $key => $gate) {     if(strpos($gate, '_') === false) {         $res[$key] = $gate;     }else{         $offset = strrpos($gate, '_') + 1;         $res[$key] = mb_substr($gate , $offset);     } } var_dump($res);
$res = collect($gates)->map(function($gate) {     $parts = explode('_', $gate);     return end($parts); });
$res = collect($gates)->map(function($gate) {     return collect(explode('_', $gate))->last(); })->toArray();
$opts = [         'http' => [                 'method' => 'GET',                 'header' => [                         'User-Agent: PHP'                 ]         ] ]; $context = stream_context_create($opts); $Events = json_decode(file_get_contents('http://api.github.com/users/0xAiKang/events', false, $context), true);
$eventTypes = []; // 事件類型 $score = 0; // 總得分 foreach ($events as $event) {     $eventTypes[] = $event['type']; }  foreach($eventTypes as $eventType) {     switch ($eventType) {         case 'PushEvent':         $score += 5;         break;         case 'CreateEvent':         $score += 4;         break;         case 'IssueEvent':         $score += 3;         break;         case 'IssueCommentEvent':         $score += 2;         break;         default:         $score += 1;         break;     } }
$score = $events->pluck('type')->map(function($eventType) {    switch ($eventType) {       case 'PushEvent':       return 5;       case 'CreateEvent':       return 4;       case 'IssueEvent':       return 3;       case 'IssueCommentEvent':       return 2;       default:       return 1;   } })->sum();
$score = $events->pluck('type')->map(function($eventType) {    return collect([        'PushEvent'=> 5,        'CreateEvent'=> 4,        'IssueEvent'=> 3,        'IssueCommentEvent'=> 2    ])->get($eventType, 1); // 如果不存在則默認(rèn)等于1 })->sum();
class GithubScore {     private $events;      private function __construct($events){         $this->events = $events;     }      public static function score($events) {         return (new static($events))->scoreEvents();     }      private function scoreEvents() {         return $this->events->pluck('type')->map(function($eventType){             return $this->lookupEventScore($eventType, 1);         })->sum();     }      public function lookupEventScore($eventType, $default_value) {        return collect([            'PushEvent'=> 5,            'CreateEvent'=> 4,            'IssueEvent'=> 3,            'IssueCommentEvent'=> 2        ])->get($eventType, $default_value); // 如果不存在則默認(rèn)等于1     } }  var_dump(GithubScore::score($events));
$messages = [     'Should be working now for all Providers.',     'If you see one where spaces are in the title let me know.',     'But there should not have blank in the key of config or .env file.' ];  // 格式化之后的結(jié)果 - Should be working now for all Providers. n - If you see one where spaces are in the title let me know. n - But there should not have blank in the key of config or .env file.
$comment = '- ' . array_shift($messages); foreach ($messages as $message) {     $comment .= "n -  ${message}"; } var_dump($comment);
$comment = collect($messages)->map(function($message){     return '- ' . $message; })->implode("n"); var_dump($comment);
$lastYear = [     6345.75,     9839.45,     7134.60,     9479.50,     9928.0,     8652.00,     7658.40,     10245.40,     7889.40,     3892.40,     3638.40,     2339.40 ];  $thisYear = [     6145.75,     6895.00,     3434.00,     9349350,     9478.60,     7652.80,     4758.40,     10945.40,     3689.40,     8992.40,     7588.40,     2239.40 ];
$profit = []; foreach($thisYear as $key => $monthly){     $profit[$key] = $monthly - $lastYear[$key]; } var_dump($profit);
$profit = collect($thisYear)->zip($lastYear)->map(function($monthly){     return $monthly->first() - $monthly->last(); });
$employees = [     [         'name' => 'example',         'email' => 'example@exmaple.com',         'company' => 'example Inc.'     ],     [         'name' => 'Lucy',         'email' => 'lucy@example.com',         'company' => 'ibm Inc.'     ],     [         'name' => 'Taylor',         'email' => 'toylor@laravel.com',         'company'=>'Laravel Inc.'     ] ];  // 格式化之后的結(jié)果 $lookup = [     'example' => 'example@example.com',     'Lucy' => ‘lucy@example.com’,     'Taylor'=> 'toylor@laravel.com' ];
$emails = []; foreach ($employees as $key => $value) {     $emails[$value['name']] = $value['email']; }
$emails = collect($employees)->reduce(function($emailLookup, $employee){     $emailLookup[$employee['name']] = $employee['email'];     return $emailLookup; },[]);
$emails = collect($employees)->pluck('name', 'email');

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享