2016-08-23 55 views
-1

我寫了一個代碼在PHP解析數據如下:在PHP數組中刪除不必要的括號

<?php 
$db_name="hotels"; 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = ""; 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$db_name); 


if(! $conn) { 
    die('Could not connect: ' . mysqli_error()); 
} 
else{ 
    //echo"<h3>Database cannection established</h3>"; 
} 

$sql_query_for_username = "select distinct `username` from hotels.ratingoffooditem"; 
$usernames_result = mysqli_query($conn, $sql_query_for_username); 

$users = array(); 
while($row=mysqli_fetch_array($usernames_result)){ 
    array_push($users, $row["username"]); 
} 

//print_r($users); 
$response=array(); 
foreach($users as $user){ 
    $sql_query= "select `food item`,rating from hotels.ratingoffooditem where username='$user'"; 

    $result= mysqli_query($conn,$sql_query); 
    $abc = array(); 
    if($result !=false){ 
     while($row=mysqli_fetch_array($result)){ 
      $def = array($row["food item"]=>$row['rating']); 
      //echo (json_encode($def)); 
      //echo "</br>"; 
      array_push($abc,$def); 

     } 

    } 
     //echo "</br>"; 
      //print_r(json_encode($abc)); 
      //echo "</br>"; 
     array_push($response, array("$user"=>array($abc))); 
    //echo "</br>"; 
} 

echo json_encode($response); 
//echo "</br>";echo "</br>";echo "</br>"; 

mysqli_close($conn); 
?> 

我想獲得導致像:

{「什裏」:{「希肯-莫莫「:4,」Buff-Momo「:3,」Chicken-Thukpa「:3,」Chiken Momo「:4,」Buff Buffy Chowmein「:2.5,」Veg-Chowmein「:3.5},」Juppi「 「:4},」 律 「:{」 希肯-莫莫 「:1},」 bidur 「:{」 希肯-莫莫 「:4.5}}

但是,我得到這樣的:

[{」什裏「: [「{」pizza「:」3「},{」Burger「:」3.5「},{」Chiken-Momo「:」4.5「},{」Chiken Momo「:」4「}, : 「4」},{ 「希肯-莫莫」: 「4」},{ 「素食-Chowmien」: 「2」},{ 「巴夫-莫莫」: 「3」},{ 「希肯-Thukpa」:」 4 「},{」 希肯-Thukpa 「:」 4 「},{」 希肯-Thukpa 「:」 2 「}]]},{」 Juppi 「:[[{」 咖喱角 「:」 4 「},{」希肯-莫莫 「:」 4 「}]]},{」 律 「:[[{」 希肯-莫莫 「:」 1 「}]]},{」 bnabin51 「:[[{」 希肯-莫莫 「:」 4.5「}]]},{」bidur「:[[{」Chiken-Momo「:」4.5「}]]}]

現在我該如何刪除不必要的括號?

+0

這些都不是不必要的括號。你正在生成這樣的json。那些是json對象中的數組。你可以使用'json_encode($ foo,JSON_FORCE_OBJECT)'來只獲取json對象。 – Archish

+0

使用json驗證器檢查你的json,unsformated – Karthi

+0

'array_push($ response,array(「$ user」=> $ abc));'用這個來代替'array_push($ response,array(「$ user」=> array( $ ABC))); '因爲'$ abc'已經是一個數組了,所以不需要使用'array($ abc)' –

回答

1

最後我得到這個簡單如下:

$response=array(); 
foreach($users as $user){ 
    $sql_query= "select `food item`,rating from hotels.ratingoffooditem where username='$user'"; 

    $result= mysqli_query($conn,$sql_query); 
    $abc = array(); 
    if($result !=false){ 
     while($row=mysqli_fetch_array($result)){ 
      $abc[$row['food item']]=$row['rating']; 

     } 

    } 

    $response[$user]=$abc; 

}