0

我正在使用可用的 API 来发送请求并接收 json 和 xml 格式的结果。我可以这样做,但如何正确显示返回的数据?

我使用 json_decode 并将 xml 数据分配给一个数组和 print_r 那些。它出现在大量的垃圾数据中。

如何在表格中显示它?或者我必须在显示之前先将数据保存到单个文件或数据库中吗?

我是 PHP 新手,因此不确定如何实现。

4

2 回答 2

2

JSON 是一个多维数组,在我看来,查看它的最简单方法就是

var_dump($json_array);

不过,这可能是您所指的数据块。

这不是一种非常适合表格的格式,因为表格本质上是二维的,而 JSON 可以是多维的。

您可以展平阵列,然后将其显示为表格。

function flatten_json($json, &$flat, $key) {

    // First check the base case: if the arg is not an array,
    //   then it's data to be inserted in the flat array.
    if (!is_array($json)) {
        $flat[$key] = $json;
    } else {

        // It's an array, to reduce the depth of the json,
        // we remove this array, by iterating through it,
        // sending the elements to be checked if they're also arrays,
        // or if they're data to be inserted into the flat array.

        foreach ($json as $name => $element) {
            flatten_json($element, $flat, $key.'_'.$name);
        }
    }
}

要使用这个函数,你首先声明你的平面数组:

$flat = array();

然后将它传递给函数,使用你的 json 和一个你想成为外键的键,如果你确定你的 json 是一个数组,这几乎可以保证,你可以将键留空。

flatten_json($json_array, $flat, '');

现在 $flat 将具有扁平化的 json,您可以将其打印为表格,如果您有许多 json 结果要打印,可能会打印到 csv 中。

如果你的 json 是:

array(
    'person' => array(
        'name' => 'timmy',
        'age' => '5'
    ),
    'car' => array(
        'make' => 'ford',
        'engine' => array(
            'hp' => 260,
            'cyls' => 8
        )
     )
 )

然后 $flat 将如下所示:

array(
    'person_name' => 'timmy',
    'person_age' => 5,
    'car_make' => 'ford',
    'car_engine_hp' => 260,
    'car_engine_cyls' => 8
)

如果你想打印在一个漂亮的 html 表中:

echo "<table><tr>";
foreach ($flat as $header => $value) {
    echo "<th>$header</th>;
}

echo "</tr><tr>";

foreach ($flat as $header => $value) {
    echo "<td>$value</td>";
}

echo "</tr></table>";
于 2013-01-03T03:31:10.203 回答
0

我有点困惑。但如果你指的是一个 xml 文件,它会像这样出现:

 <books> 
  <book published="2011-07-24 19:40:26"> 
  <title>I left my heart on Europa</title> 
   <author>Ship of Nomads</author>
 < /book>
  <book published="2011-07-24 19:40:26"> 
  <title>I left my liveron Europa</title> 
   <author>Ship of Nomads</author>
 < /book> 
</books>

您可以在这里使用simplexml_load_file做一些 php 技巧。来自上述 xml 的示例,您可以使用以下代码:

    $mybooks= simplexml_load_file('books.xml'); 
echo "<ul id="booklist">"; 
foreach ($mybooks as $bookinfo):
 $title=$bookinfo->title; 
$author=$bookinfo->author; 
$date=$bookinfo['published']; 
echo "<li><div class="title">".$title."</div><div class="author">by ".$author."</div><b>".$date."</b></li>";
 endforeach; echo "</ul>";

希望这可以帮助。

于 2013-01-03T04:00:47.060 回答