2016-01-27 38 views
0

我有一個包含逗號分隔的數字的字符串。即,1,2,3,6...。我已經使用爆炸刪除了逗號。現在我想匹配數據庫中的相應值。`json_encode`不能用於爆炸

我的代碼是,

$color = "1,2,3,9,5"; 
$color_split = explode(",", $color); 

foreach($color_split as $item) 
{ 
    $select_color = "SELECT * FROM tbl_product_color WHERE color_id = '$item'"; 
    $select_color_q = mysqli_query($c, $select_color) or die(mysqli_error($c)); 
    $length = mysqli_num_rows($select_color_q); 

    if($length > 0) 
    { 
     while($select_color_r = mysqli_fetch_object($select_color_q)) 
     { 
      $var[] = $select_color_r; 
     } 
     $var = json_encode($var); 
     echo '{"color_list":'.$var.'}'; 
    } 
    else 
    { 
     $arr = array('status'=>"notfound"); 
     echo '{"color_list":['.json_encode($arr).']}'; 
    } 
} 

現在輸出,

{"color_list":[{"color_id":"1","color_name":"White","color_code":"#f2f2f2"}]} 

and one error, 

Fatal error: [] operator not supported for strings in C:\wamp\www\jithin\get_color.php on line 18 

線18包含$var[] = $select_color_r;

我需要的輸出,

{"color_list":[{"color_id":"1","color_name":"White","color_code":"#f2f2f2"},{"color_id":"2","color_name":"Black","color_code":"#000000"},{"color_id":"3","color_name":"Red","color_code":"#F000000"},...]} 
+0

你沒有定義'$ var'爲陣列。 –

+0

@CharlotteDunois:在定義'$ var'後,結果是'{「color_list」:[{「color_id」:「1」,「color_name」:「White」,「color_code」:「#f2f2f2」}]} { color_list 「:[{」 COLOR_ID 「:」 2" , 「COLOR_NAME」: 「黑」, 「color_code」: 「#000000」}]} ...'。我希望以'{「color_list」:[{「color_id」:「1」,「color_name」:「White」,「color_code」:「#f2f2f2」},{「color_id」:「2」,「color_name」 :「Black」,「color_code」:「#000000」},{「color_id」:「3」,「color_name」:「Red」,「color_code」:「#F000000」},...]}' –

+0

Then你需要檢查數組結構,如果它是你想要的。如果沒有,你需要改變它。 –

回答

2

你並不需要使用foreachexplode在這裏你可以簡單地更新你的MySql查詢和code等作爲

$color = "1,2,3,9,5"; 
$select_color = "SELECT * FROM tbl_product_color WHERE color_id IN ($color)"; 
$select_color_q = mysqli_query($c, $select_color) or die(mysqli_error($c)); 
$arr['color_list'] = array(); 
if(mysqli_num_rows($select_color_q) > 0) 
    { 
     while($select_color_r = mysqli_fetch_object($select_color_q)) 
     { 
      $var[] = $select_color_r; 
     } 

    }else{ 
     $var = array('status'=>"notfound"); 
    } 

$arr['color_list'] = $var; 
echo json_encode($arr); 
1

您在此處設置$var爲字符串:

$var = json_encode($var); 

但在的foreach下一步要使用$va R作爲數組。

$var[] = $select_color_r; 

只是刪除以下行:

$var = json_encode($var); 

和改變這一行:

echo '{"color_list":'.$var.'}'; 

echo '{"color_list":'.json_encode($var);.'}'; 
+0

現在結果是'{「color_list」:[{「color_id」:「1」,「color_name」:「White」,「color_code」:「#f2f2f2」}]} {「color_list」:[{「color_id」 : 「1」, 「COLOR_NAME」: 「白」, 「color_code」: 「#f2f2f2」},{ 「COLOR_ID」: 「2」, 「COLOR_NAME」: 「黑」, 「color_code」: 「#000000」}, ...]}' –

+0

我不想第一個'{「color_list」:[{「color_id」:「1」,「color_name」:「White」,「color_code」:「#f2f2f2」}]}' –