引用刚在foreach循环中的数组中设置的值

时间:2018-10-31 14:29:36

标签: php laravel-5

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

为了获取特定值之一,我们想引用循环中提取的其他两个值

下面是循环,我们要从“ sales”和“ quotes”查询的结果中获取“ conversionRate”值。我不知道该如何在仍处于循环中的情况下调用它们。

 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 ] 

1 个答案:

答案 0 :(得分:1)

您正在有效地做的是尝试在创建数组条目时使用其自身的值...您不能这样做:)

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

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;
}