0

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
        )

)

我想在单一变量而不是数组中获得结果

$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

我怎样才能得到这个请帮助我......

4

3 回答 3

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
于 2013-08-26T05:23:30.980 回答
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 中可以使用数组映射调用内部的闭包。

于 2013-08-26T05:15:21.690 回答
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;
于 2013-08-26T05:40:30.073 回答