通过PHP编码JSON

通过PHP编码JSON,php,json,Php,Json,好的,我正试图在php中为json创建一个循环,但我不知道在哪里可以保持json输出所需的格式,或者如何循环。这就是我所拥有的: $number = array(31,25,160); $json_holder = array(); $counter = count($names); $i = 0; while($i < $counter){ $json_holder = array('user'=> array('results'=> array('tagnumbe

好的,我正试图在php中为json创建一个循环,但我不知道在哪里可以保持json输出所需的格式,或者如何循环。这就是我所拥有的:

$number = array(31,25,160);
$json_holder = array();
$counter = count($names);
$i = 0;

while($i < $counter){
    $json_holder = array('user'=> array('results'=> array('tagnumber' => $number[$i],'status'=>'good'),);
    echo json_encode($json_holder);
    $i++;
}
因此,与每次生成新的JSON根元素不同,我只想在结果中生成一个新数组,这样它的输出如下:

{
    "user": {
        "results": [{
            "tagnumber": 31,
        } {
            "tagnumber": 25,
        } {
            "tagnumber": 160,
        }],
        "status": "okay"
    }
} 
我希望我的代码有意义

$number = array(31,25,160);
$payload = array('user' => array('results' => array(), 'status' => 'okay'));
foreach ($number as $num) {
   $payload['user']['results'][]['tagnumber'] = $num;
}
echo json_encode($payload);
这里不需要
for()
循环

输出

{
    "user": {
        "results": [
            {
                "tagnumber": 31
            },
            {
                "tagnumber": 25
            },
            {
                "tagnumber": 160
            }
        ],
        "status": "okay"
    }
}

如果没有
$i++
,您的
while
循环如何不是无限循环?您想要的格式不是很好。如果不同的对象具有不同的状态怎么办?通常,只有一个属性的对象表示设计不好。对不起,我忘了粘贴那部分。我想最好是将
状态
附加到每个
标记号
组,而不是只为整个
用户
添加一个。这不是他/她要求的。@mc10:你完全正确,但我刚刚开始学习JSON及其概念,因为这是我需要学习的东西帮助把这一块拼图拼在一起。@David好极了。这个答案非常清楚。我不知道为什么我如此热衷于使用for循环而不是foreach。我现在可以看到如何更好地组织它,它只是使它更容易。学习如何操作
array()
s是需要时间的,一旦掌握了它们,这样的事情就容易多了。
{
    "user": {
        "results": [
            {
                "tagnumber": 31
            },
            {
                "tagnumber": 25
            },
            {
                "tagnumber": 160
            }
        ],
        "status": "okay"
    }
}