php - Laravel 创建一个 JSON 数组

标签 php json laravel loops

尝试为 Morris.js 圆环图创建一个 JSON 数组,但想不出任何方法来获得正确的格式。有什么建议吗?

我的 Controller :

    $user = User::find((Auth::user()->id));
    $budget = $user->budget()->get();
    $labels = ['rent', 'heating', 'utilities', 'internet_tv', 'phone', 'food', 'sweets', 'alcohol_cigs', 'insurance'        , 'loans', 'finance_other', 'cosmetics'
                , 'medicine', 'clothes_shoes', 'accessories', 'electronics', 'school', 'entertainment', 'food_out', 'holidays', 'books', 'pets', 'gifts', 'car', 'other'];
    $data2 = [];
    foreach ($labels as $label)
    {
        $data2['label'][] = $label;
        $data2['value'][] = $budget->sum($label);
    }
    $data2 = json_encode($data2);

我得到了什么:

'{"label":["rent","heating","utilities","internet_tv" ...],"value":[435,30,0,0 ...]}'

我想得到:

'[{"label":"rent","value":"435"},{"label":"heating","value":"30"},{"label":"utilities","value":"0"},{"label":"internet_tv","value":"0"} ...]'

最佳答案

您的代码正在为 $data2 数组创建两个子数组,一个 label 和一个 value。然后,将数据一遍又一遍地推送到这两个数组。

相反,您想要创建一个新数组并将其推送到 $data2 数组,如下所示:

$data2 = [];
foreach ($labels as $label)
{
    $data2[] = [
        'label' => $label,
        'value' => $budget->sum($label)
    ];
}

关于php - Laravel 创建一个 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37220529/

相关文章:

php - 如何比较来自同名mysql的不同表的值

javascript - 将 JSON 字符串发布到 ASP.NET MVC 3 操作导致空参数

php - 如何将 json_encode 结果中的每个元素显示为 PHP 表格

python - 是否可以在 App Engine 中缓存 json 结果?

laravel中的Excel文件验证不起作用

php - 如何使用带有主义和symfony2的自定义枚举数据类型将枚举值保存到数据库?

php 注册,无法正常工作。

php - 在没有 ssh 访问权限的情况下运行 composer 和 laravel (artisan) 命令

php - Laravel 从集合中获取值

javascript - 如何在没有 "["的情况下使用 Codemirror 代码折叠?