2016-01-27 112 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”}]}' –