2016-06-10 51 views
0

JSON數組我需要有這樣的格式: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"] 
} 

回答

0

您需要將array_values應用到您的數組。

json_encode(array_values($$contacts));

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 
     ] 
    ]; 

}