2017-02-14 117 views
-3

我是新的PHP,请帮我的代码。Php数组的数组以json循环

我正在尝试为IOS应用程序创建PHP json。 JSON应该看起来像这样

{"items": [ 
    { 
     "ID":12, 
     "name1":"some name", 
     "name2":"some name2"    
    }, 
    { 
     "ID":13, 
     "name1":"another name", 
     "name2":"another name2" 
    },] } 

这里是我的PHP代码部分

$keys = array(ID, name1, name2); 
while ($row = mysqli_fetch_array($result)) 
{ 
extract($row); 
$values = array($row['ID'], $row['name1'], $row['name2']); 
$response = array_combine($keys, $values); 
header('Content-Type: application/json, charset=utf-8'); 
echo json_encode($response, JSON_UNESCAPED_UNICODE); 
} 

这给我造成这样

{ 
     "ID":12, 
     "name1":"some name", 
     "name2":"some name2"    
    } 
    { 
     "ID":13, 
     "name1":"another name", 
     "name2":"another name2" 
    } 

任何人可以帮助我吗? 在此先感谢。

+0

你快到了。你有的结果是一个数组。你想要的结果是一个带有'Items'属性的JSON对象,该属性包含该数组。 – Squiggle

+0

您可能会更好地寻求SO聊天帮助 - https://chat.stackoverflow.com/rooms/11/php,因为这是一个更好的代码审查和讨论论坛。 – Squiggle

回答

0

你需要建立你的数组,然后在循环的外部编码JSON来启动;

$keys = array(ID, name1, name2); 
$items = array(); 
while ($row = mysqli_fetch_array($result)) 
{ 
    extract($row); 
    $values = array($row['ID'], $row['name1'], $row['name2']); 
    $item = array_combine($keys, $values); 
    $items[] = $item; 
} 

header('Content-Type: application/json, charset=utf-8'); 
echo json_encode(array("items"=>$items), JSON_UNESCAPED_UNICODE); 

在这里,我们建立你的项目的数组到$items,然后对其进行编码循环的所有外。

+1

非常感谢,这正是我需要的,我正在寻找解决方案约3天)) ) –

+0

当你知道如何时,总是很容易! – Tom

0

看来你是新的还是真的不知道一些有关JSON尚未

,但我会尽力帮助你

只是简单地存储在其关联数组的分配items,因为它的指数

$response = array(
     'items' => array_combine($keys, $values) 
    ); 
    header('Content-Type: application/json, charset=utf-8'); 
    echo json_encode($response, JSON_UNESCAPED_UNICODE); 
+0

谢谢你的回答,我json对我来说真的很新鲜。 您的建议给了我几乎相同的结果:( {“items”:{“ID”:“15”,“name1”:“some name”,“name2”:“some name2”}} {“items”: {“ID”:“16”,“name1”:“别名”,“name2”:“另一个名字2”}} –