首页 > 解决方案 > 在 foreach 循环中引用刚刚在数组中设置的值

问题描述

我们有一个 foreach 循环,它是我们的控制台命令之一,它构建了一个数组以在转换为 Json 后放入数据库中。

为了获得特定值之一,我们想引用循环中已拉出的两个 OTHER 值

下面是循环,“conversionRate”值是我们试图从“sales”和“quotes”查询的结果中获得的值。我不知道如何在仍在循环中调用它们。

 foreach ($users as $user) {
            $todaysCcActionsArray[] = [
                'name' => DB::Table('sw_users')->where('EmailAddress', $user)->value('FirstName'),

                'code' => $user,

                'sales' => Order::where('Status', 'BOOKING')
                ->whereNotIn('Product', ['commercial_insurance', 'home_insurance'])
                ->where('MasterOrderNumber', 0)
                ->whereNull('OriginalOrderNumber')
                ->where('CallCentreID', '!=', $user)
                ->whereDate('OrderDate', '=', date('Y-m-d'))->count(),

                'quotes' => Order::where('Status', 'QUOTE')
                ->whereNotIn('Product', ['commercial_insurance', 'home_insurance'])
                ->where('MasterOrderNumber', 0)
                ->whereNull('OriginalOrderNumber')
                ->where('CallCentreID', '!=', $user)
                ->whereDate('OrderDate', '=', date('Y-m-d'))->count(),

                'conversionRate' => 'sales' / 'quotes' * 100
            ];
        }

更新

这就是打印出来的结果。

array:16 [ 
        0 => array:4 [ 
                "name" => "Melissa" 
                "code" => "mkingnew" 
                "sales" => 2 
                "quotes" => 1 
                ] 
        1 => array:4 [ 
                "name" => "Wendy" 
                "code" => "wjonesnew" 
                "sales" => 2 
                "quotes" => 1 
                ] 
        2 => array:4 [ 
                "name" => "Sarah" 
                "code" => "sdickersonnew" 
                "sales" => 2 
                "quotes" => 1 ] 

标签: phplaravel-5

解决方案


您实际上正在做的是尝试在创建数组条目时使用其自身的值创建一个数组条目......您不能那样做:)

您可以做的是分段构建条目,然后将其添加到数组中:

foreach ($users as $user) {
    $entry = array(
        'name' => DB::Table('sw_users')->where('EmailAddress', $user)->value('FirstName'),
        'code' => $user,
        'sales' => Order::where('Status', 'BOOKING')
            ->whereNotIn('Product', ['commercial_insurance', 'home_insurance'])
            ->where('MasterOrderNumber', 0)
            ->whereNull('OriginalOrderNumber')
            ->where('CallCentreID', '!=', $user)
            ->whereDate('OrderDate', '=', date('Y-m-d'))->count(),

        'quotes' => Order::where('Status', 'QUOTE')
            ->whereNotIn('Product', ['commercial_insurance', 'home_insurance'])
            ->where('MasterOrderNumber', 0)
            ->whereNull('OriginalOrderNumber')
            ->where('CallCentreID', '!=', $user)
            ->whereDate('OrderDate', '=', date('Y-m-d'))->count(),
    );
    $entry['conversionRate'] = $entry['sales'] / $entry['quotes'] * 100; 

    $todaysCcActionsArray[] = $entry;
}

推荐阅读