php - 拉拉维尔 : get data array and loop with For

标签 php arrays laravel for-loop

嗨,我正在尝试获取数据数组并使用 For 循环。所以我有一个名为“color”的数组,我想用 For 循环该数组。但我的结果有些麻烦。我曾尝试更改数组和 foreach 但我不知道如何获得我想要的结果。

结果:

"data": [
        {
            "title": "get data users",
            "function_name": "selectDataUser",
            "function_drop": "selectDataUser",
            "type_of_chart": "Pie",
            "embed": null,
            "created_at": "2019-06-15 03:26:09.000",
            "updated_at": null,
            "data_chart": [
                {
                    "name": "Administrator",
                    "total": "100",
                    "color": "0xFF888888" //color cannot be the same
                },
                {
                    "name": "Staff",
                    "total": "100",
                    "color": "0xFF888888" //the color must be different
                },
                {
                    "name": "Super Administrator",
                    "total": "1",
                    "color": "0xFF888888" //this is not result what I want.
                }
            ],

      }
  ]

我想要这样的回复:

 "data": [
            {
                "title": "get data users",
                "function_name": "selectDataUser",
                "function_drop": "selectDataUser",
                "type_of_chart": "Pie",
                "embed": null,
                "created_at": "2019-06-15 03:26:09.000",
                "updated_at": null,
                "data_chart": [
                    {
                        "name": "Administrator",
                        "total": "100",
                        "color": "0xFF000000" //all this color different
                    },
                    {
                        "name": "Staff",
                        "total": "100",
                        "color": "0xFF444444" //the color different
                    },
                    {
                        "name": "Super Administrator",
                        "total": "1",
                        "color": "0xFF888888" //this is result what I want.
                    }
                ],
}
  ]

这是我的代码:

 public function index(Request $request)
    {
        try {
            $query = $this->dashboard->with('rolesDashboard','userDashboard')
                                    ->orderBy('id')
                                    ->get();

            $data=[];
            foreach ($query as $key) {

            $data_chart = DB::select($key->function_name); //call store procedure from SQL Server

            $color = array(
                "0xFF000000" ,
                "0xFF444444" ,
                "0xFF888888" ,
                "0xFFCCCCCC",
                "0xFFFFFFFF",
                "0xFFFF0000" ,
                "0xFF00FF00" ,
            ); // this is array color

            for ($i=0; $i < count($data_chart) ; $i++) { 
                $set = $color[$i]; //Get data array color
            }


            foreach($data_chart as $row){
                $row->color = $set;
            }

            $data[] = [
                'title' => $key->title,
                'function_name' => $key->function_name,
                'created_at' => $key->created_at,
                'updated_at' => $key->updated_at, 
                'data_chart' => $data_chart, //return data_chart and color
            ];  
            }

            return response()->default(200, trans('messages.success.get-data'),$data);
        } catch (Exception $e) {
            return response()->default(400, $e->getMessage());
        }
    }

最佳答案

$set 是数组,不能指定为字符串。我的建议是更改以下代码:

        for ($i=0; $i < count($data_chart) ; $i++) { 
            $set = $color[$i]; //Get data array color
        }


        foreach($data_chart as $row){
            $row->color = $set;
        }

        $i=0; 
        foreach($data_chart as $row){
            $row->color = $color[$i];
            $i++;
        }

但是如果您的 $data_chart 计数超过 $color 计数,它将返回错误,为了更好地处理,请使用以下代码:

        $i=0; 
        foreach($data_chart as $row){
            if(isset($color[$i])){
            $row->color = $color[$i];
            $i++; }
            else{
            $i=0;
            }

        }

关于php - 拉拉维尔 : get data array and loop with For,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56642988/

相关文章:

javascript - 如何在 laravel 5 提交成功后显示一个甜蜜的警告框?

php - 如何将php数组数据发送到javascript变量

php - 如何从 PHP 执行 SSH?

PHP 邮件功能将 x-msg 添加到所有链接...?

javascript - 组合对象数组的特定属性

ios - 如何使用 token 对用户进行身份验证(在 iPhone 中保持身份验证)

php - Paypal 一个用户支付给门户和门户支付给另一个用户

php - 从帖子中保存多个选定的列表框

javascript - 为什么857比1000和1001大? Javascript

arrays - bash 数组保留包含字符串的元素