Laravel从结果

时间:2016-06-10 09:02:53

标签: php laravel

在我的应用程序中,我需要这种格式:

[
    {"mobileNumber":"00000"},
    {
        "mobileNumber":"AAAA",
        "ewallets": ["11111","2222","3333"]
    },
    {
        "mobileNumber":"BBBB",
        "ewallets": ["11111","2222","3333","4444","5555"]
    }
]

现在我想通过以下代码创建这种格式:

$contacts = [];
for ($idx = 0; $idx < count($all_data); $idx++) {
    $obj = (Array)$all_data[$idx];
    $mobileNumber = str_replace('-', '', $mobileNumber);

    if($mobileNumber[0] != '0')
        $mobileNumber = '0'.$mobileNumber;
    $data = ContactLists::whereContactMobileNumber($mobileNumber)->exists();
    if($data){

        $contact_ewallets = UserWallets::where('account_number', 'LIKE', '%' . substr($mobileNumber, 1, strlen($mobileNumber)))->get();

        $temp[]['mobileNumber']=$obj["mobileNumber"];

        foreach ($contact_ewallets as $value){
            $ewallet['ewallet'][]=$value->account_number;
        }

        $contacts = array_merge($temp,$ewallet);
    }
}
echo json_encode($contacts);

我的代码生成了这种格式并且错误:

{
    "0":
        {"mobileNumber":"(937) 303-6569"},
    "1":
        {"mobileNumber":"09192522674"},
    "2":
        {
            "mobileNumber":"09373036569"
        },
        "ewallet":["EPIRR9373036569","EPUSD9373036569","EPCHF9373036569","EPIRR9373036569","EPUSD9373036569","EPCHF9373036569"]
}

2 个答案:

答案 0 :(得分:0)

您需要将array_values应用于数组。

json_encode(array_values($$contacts));

答案 1 :(得分:0)

问题由以下代码解决:

$accountNumbers = "";
$data = UserWallets::where('account_number', 'LIKE', '%' . substr($mobileNumber, 1, strlen($mobileNumber)))->first();
if ($data != null) {

    $contact_ewallets = UserWallets::where('account_number', 'LIKE', '%' . substr($mobileNumber, 1, strlen($mobileNumber)))->get();

    foreach ($contact_ewallets as $value) {
        $accountNumbers[]['accountNumber'] = $value->account_number;
    }

    $epayContacts[] = [
        [
            'mobileNumber' => $obj["mobileNumber"],
            'contactUserId' => $data->user_id,
            'userEwallets' => $accountNumbers
        ]
    ];

}