JSON响应单个php变量

时间:2013-08-26 05:03:35

标签: php json

JSON响应是

[{"id":630770,"t2":"India A","t1":"South Africa A"},
{"id":593454,"t2":"Nottinghamshire","t1":"Kent"},
{"id":593453,"t2":"Northamptonshire","t1":"Warwickshire"}, 
{"id":593457,"t2":"Sussex","t1":"Worcestershire"},
{"id":593451,"t2":"Hampshire","t1":"Derbyshire"},
{"id":593456,"t2":"Surrey","t1":"Durham"},{"id":593449,"t2":"Essex","t1":"Lancashire"},
{"id":593455,"t2":"Somerset","t1":"Gloucestershire"},
{"id":593452,"t2":"Leicestershire","t1":"Middlesex"},
{"id":593450,"t2":"Glamorgan","t1":"Yorkshire"}]

在php中使用JSON DECODE时,Array是:

Array
(
    [0] => stdClass Object
        (
            [id] => 630770
            [t2] => India A
            [t1] => South Africa A
        )

    [1] => stdClass Object
        (
            [id] => 593454
            [t2] => Nottinghamshire
            [t1] => Kent
        )

    [2] => stdClass Object
        (
            [id] => 593453
            [t2] => Northamptonshire
            [t1] => Warwickshire
        )

    [3] => stdClass Object
        (
            [id] => 593457
            [t2] => Sussex
            [t1] => Worcestershire
        )

    [4] => stdClass Object
        (
            [id] => 593451
            [t2] => Hampshire
            [t1] => Derbyshire
        )

    [5] => stdClass Object
        (
            [id] => 593456
            [t2] => Surrey
            [t1] => Durham
        )

    [6] => stdClass Object
        (
            [id] => 593449
            [t2] => Essex
            [t1] => Lancashire
        )

    [7] => stdClass Object
        (
            [id] => 593455
            [t2] => Somerset
            [t1] => Gloucestershire
        )

    [8] => stdClass Object
        (
            [id] => 593452
            [t2] => Leicestershire
            [t1] => Middlesex
        )

    [9] => stdClass Object
        (
            [id] => 593450
            [t2] => Glamorgan
            [t1] => Yorkshire
        )

)

我希望将结果变为Singal变量而不是Array

$var = "ON Going Matches $n : $t1 VS $t2\n";

它应该返回

ON Going Matches
1: South Africa A VS India A
2: Kent VS Nottinghamshire
3: Warwickshire VS Northamptonshire
4: Worcestershire VS Sussex
5: Derbyshire VS Hampshire
6: Durham VS Surrey
7: Lancashire VS Essex
8: Gloucestershire VS Somerset
9: Middlesex VS Leicestershire
10: Yorkshire VS Glamorgan

我正在使用FOREACH LOOP输出

ON Going Matches
1: South Africa A VS India A
ON Going Matches
2: Kent VS Nottinghamshire
ON Going Matches
3: Warwickshire VS Northamptonshire
ON Going Matches
4: Worcestershire VS Sussex
ON Going Matches
5: Derbyshire VS Hampshire
ON Going Matches
6: Durham VS Surrey
ON Going Matches
7: Lancashire VS Essex
ON Going Matches
8: Gloucestershire VS Somerset
ON Going Matches
9: Middlesex VS Leicestershire
ON Going Matches
10: Yorkshire VS Glamorgan

我怎么能得到这个请帮助我........

3 个答案:

答案 0 :(得分:2)

这应该有效:

$json = <<< EOF
[{"id":630770,"t2":"India A","t1":"South Africa A"},
{"id":593454,"t2":"Nottinghamshire","t1":"Kent"},
{"id":593453,"t2":"Northamptonshire","t1":"Warwickshire"}, 
{"id":593457,"t2":"Sussex","t1":"Worcestershire"},
{"id":593451,"t2":"Hampshire","t1":"Derbyshire"},
{"id":593456,"t2":"Surrey","t1":"Durham"},{"id":593449,"t2":"Essex","t1":"Lancashire"},
{"id":593455,"t2":"Somerset","t1":"Gloucestershire"},
{"id":593452,"t2":"Leicestershire","t1":"Middlesex"},
{"id":593450,"t2":"Glamorgan","t1":"Yorkshire"}]
EOF;
$data = "ON Going Matches\n" . implode("\n", array_map(function($m){static $i=1;
       return $i++.': '.$m['t1'].' VS '.$m['t2'];}, json_decode($json, true)) );
echo $data."\n";

<强>输出:

ON Going Matches
1: South Africa A VS India A
2: Kent VS Nottinghamshire
3: Warwickshire VS Northamptonshire
4: Worcestershire VS Sussex
5: Derbyshire VS Hampshire
6: Durham VS Surrey
7: Lancashire VS Essex
8: Gloucestershire VS Somerset
9: Middlesex VS Leicestershire
10: Yorkshire VS Glamorgan

答案 1 :(得分:0)

为此,您可以使用array_reduce来获得所需内容。

<?php
$json = '[{"id":630770,"t2":"India A","t1":"South Africa A"},
{"id":593454,"t2":"Nottinghamshire","t1":"Kent"},
{"id":593453,"t2":"Northamptonshire","t1":"Warwickshire"}, 
{"id":593457,"t2":"Sussex","t1":"Worcestershire"},
{"id":593451,"t2":"Hampshire","t1":"Derbyshire"},
{"id":593456,"t2":"Surrey","t1":"Durham"},{"id":593449,"t2":"Essex","t1":"Lancashire"},
{"id":593455,"t2":"Somerset","t1":"Gloucestershire"},
{"id":593452,"t2":"Leicestershire","t1":"Middlesex"},
{"id":593450,"t2":"Glamorgan","t1":"Yorkshire"}]';


$data = array_reduce(json_decode($json, true), 
                     function(&$str, $item) {
                         static $i = 0;
                         $i++;
                         $str.= $i.". ".$item["t1"]." VS ".$item["t2"]."\n";
                         return $str;
                     },"ON Going Matches\n"
        );
print $data;

现在$str包含可以添加到数据库的数据 注意。在php 5.3中可以使用数组映射调用中的闭包。

答案 2 :(得分:0)

echo "On Going Matches:<br>\n";

中取出foreach
$json = json_decode('[{"id":630770,"t2":"India A","t1":"South Africa A"},{"id":593454,"t2":"Nottinghamshire","t1":"Kent"},{"id":593453,"t2":"Northamptonshire","t1":"Warwickshire"},{"id":593457,"t2":"Sussex","t1":"Worcestershire"},{"id":593451,"t2":"Hampshire","t1":"Derbyshire"},{"id":593456,"t2":"Surrey","t1":"Durham"},{"id":593449,"t2":"Essex","t1":"Lancashire"},{"id":593455,"t2":"Somerset","t1":"Gloucestershire"},{"id":593452,"t2":"Leicestershire","t1":"Middlesex"},{"id":593450,"t2":"Glamorgan","t1":"Yorkshire"}]');

$answer = "On Going Matches:<br>\n";
$index = 0;
foreach($json as $jsonelement)
{
    $index++;
    $line = $index .": ". $jsonelement->t1 ." VS ". $jsonelement->t2 . " <br>\n";
    $answer = $answer . $line;
}
echo $answer;

另一种方法是使用json_decode('your_json_string here', true),它将数组中的每个对象转换为关联数组。

$answer = "On Going Matches:<br>\n";

$index = 0;
foreach($json as $jsonelement)
{
    $index++;
    $line = $index .": ". $jsonelement['t1'] ." VS ". $jsonelement['t2'] . " <br>\n";
    $answer = $answer . $line;
}
echo $answer;