2014-02-24 116 views
0

我有一个名为basket的基本mysql表,其中有三个值。我正在使用foreacg循环获取所有值,然后json_encode将它们放入json对象中。我在获取正确的json对象格式方面遇到了一些困难。在表中,有一个称为项目的字段,其值存储在一个由逗号分隔的字符串中。我如何获取每个项目并将它们放入原始数组中,但放入其自己的数组中?下面将更好地解释什么,我试图完成Json_encode - 从数据库中获取值并将它们放入数组中

+----+------------+---------------------+ 
| id | type |  items  | 
+----+------------+---------------------+ 
| 1 | accesories | watches, sunglasses | 
| 2 | jeans  | skinny, slim  | 
+----+------------+---------------------+ 

DB取

$db_select = $db_con->prepare("SELECT 
    b.type, 
    b.items 
    FROM bakset b 
    "); 

if (!$db_select) return false; 
if (!$db_select->execute()) return false; 
$results = $db_select->fetchAll(\PDO::FETCH_ASSOC); 
if(!empty($results)) 
    $responses = array(); 
    foreach ($results as $value){ 
    $responses[] = array(
     'type' => $value['type'], 
     'items' => array($value['items']) 
    ); 
    } 
echo json_encode($responses); 

当前格式

[ 
    { 
    type: "accessories", 
    items: [ 
    "watches, sunglasses" 
    ] 
    } 
] 

exptected格式

[ 
    { 
    type: "accessories", 
    items: [ 
    "watches", "sunglasses" 
    ] 
    } 
] 

回答

2

在此特定示例中,您正在将字符串包装在一个数组中,而不是从字符串创建数组。更改此:

'items' => array($value['items']) 

...这样的:

'items' => explode(',', $value['items']) 

显然,你需要将此只有在它是有关您的数据库结果。如果这是你唯一的预期结果,那么这就是你所需要的。

我也建议修剪空白断爆炸位:

'items' => array_map('trim', explode(',', $value['items'])) 

文档:

+0

好吧,这是更清晰现在。谢谢! – techAddict82

相关问题