合并PHP数组以获取JSON输出

时间:2013-08-07 21:31:10

标签: php arrays json

我很难回到单个阵列,然后我可以将其作为JSON返回。

模特:

class CoverageLimit extends Eloquent {

    protected $table = 'webapp_limit_tbl';

    public static function index($code,$plan_type,$income_tier){
        $data =  CoverageLimit::where('limitcode', $code)
        ->where('plantypecode', $plan_type)
        ->where('incometiercode', $income_tier)
        ->get(array('limitcode','limit_desc'));
        return print_r($data->toArray());
    }

}

控制器:

$limits = array();
    foreach($pieces as $coverage_limit) {
    $limits = array_merge($limits, coveragelimit::index($coverage_limit,$plan_type,$income_tier));
//this now works thanks to suggestion below
    } 
return $limits;

返回:

Array
(
    [0] => Array
        (
            [limitcode] => L0001
            [limit_desc] => $1M per claim / $2M annual aggregate
        )

)
Array
(
    [0] => Array
        (
            [limitcode] => L0002
            [limit_desc] => $2M per claim/ $2M annual aggregate
        )

)
[true,true]

目标是通过json_encode($ limits)输出以下JSON数据:

[{"limitcode":"L0001","limit_desc":"$1M per claim / $2M annual aggregate"},{"limitcode":"L0002","limit_desc":"$2M per claim / $2M annual aggregate"}]

我认为我需要的是一个像下面这样的单一阵列才能实现这一目标,但我似乎无法实现这一目标。

Array
(
    [0] => Array
        (
            [limitcode] => L0001
            [limit_desc] => $1M per claim / $2M annual aggregate
        ),
    [1] => Array
        (
            [limitcode] => L0002
            [limit_desc] => $2M per claim/ $2M annual aggregate
        )

)

对于如何将此返回合并为单个数组以获得有效的json输出,我将不胜感激。或者,如果有一种方法可以将它作为一个数组从foreach返回。感谢。

1 个答案:

答案 0 :(得分:1)

首先,请勿使用return print_r($data->toArray());

这是不正确的。只需return $data->toArray(),它应该可以正常工作。

问题是print_r返回一个布尔值并输出到stdout数据结构的文本表示。这就是为什么你在输出示例的末尾看到恼人的[true,true]。您尝试json_encode的数组实际上只是一个数组,其中两个值为true,从print_r返回。