Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel,这种代码的替代方式在不改变其含义的情况下看起来很美_Php_Laravel 5.4 - Fatal编程技术网

Php Laravel,这种代码的替代方式在不改变其含义的情况下看起来很美

Php Laravel,这种代码的替代方式在不改变其含义的情况下看起来很美,php,laravel-5.4,Php,Laravel 5.4,有没有其他更短更漂亮的方法?目前正在使用Maatwebsite/Laravel Excel foreach ($rows as $key => $value) { if($value->{'red'} == 1) { DB::table('furnitures')->insert( [ 'chair' => $value->{'Chair Name'}, 'desk' =

有没有其他更短更漂亮的方法?目前正在使用Maatwebsite/Laravel Excel

foreach ($rows as $key => $value)
{
    if($value->{'red'} == 1)
    {
        DB::table('furnitures')->insert(
        [
            'chair' => $value->{'Chair Name'},
            'desk' => $value->{'Desk Name'},
            'tv' => $value->{'TV Name'},
            'lamp' => $value->{'Lamp Name'}
            'carpet' => 1,
        ]);
    }

    if($value->{'green'} == 1)
    {
        DB::table('furnitures')->insert(
        [
            'chair' => $value->{'Chair Name'},
            'desk' => $value->{'Desk Name'},
            'tv' => $value->{'TV Name'},
            'lamp' => $value->{'Lamp Name'}
            'carpet' => 2,
        ]);
    }

    if($value->{'blue'} == 1)
    {
        DB::table('furnitures')->insert(
        [
            'chair' => $value->{'Chair Name'},
            'desk' => $value->{'Desk Name'},
            'tv' => $value->{'TV Name'},
            'lamp' => $value->{'Lamp Name'}
            'carpet' => 3,
        ]);
    }
}

请注意,“地毯”会根据颜色(红色、绿色、蓝色)更改值。你一定会问“为什么所有条件都是if,为什么不是else if?”这是因为我想用不同的“地毯”值存储所有值,尽管所有其他值都是相同的

请尝试以下方法:

$colors = ['red' => 1, 'green' => 2, 'blue' => 3];
foreach ($rows as $key => $value) {
    foreach ($colors as $color_name => $color_value) {
        if ($value->{$color_name} == 1) {
            DB::table('furnitures')->insert(
                [
                    'chair'  => $value->{'Chair Name'},
                    'desk'   => $value->{'Desk Name'},
                    'tv'     => $value->{'TV Name'},
                    'lamp'   => $value->{'Lamp Name'},
                    'carpet' => $color_value,
                ]
            );
        }
    }
}  

哦,天哪,那代码太漂亮了!非常感谢你!