0

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 つの配列として返す方法がある場合。ありがとう。

4

1 に答える 1

1

まず、使わないreturn print_r($data->toArray());

それは正しくありません。実行するだけでreturn $data->toArray()、問題なく動作するはずです。

問題は、print_r がブール値を返し、データ構造のテキスト表現を stdout に出力することです。そのため、出力例の最後に迷惑な [true, true] が表示されます。json_encode しようとしている配列は、実際には print_r から返された true の 2 つの値を持つ単なる配列です。

于 2013-08-07T21:42:24.000 に答える