0

利用可能な API を使用してリクエストを送信し、json および xml 形式の結果を受け取ります。それはできますが、返されたデータを正しく表示するにはどうすればよいですか?

私はjson_decodeを使用し、xmlデータを配列に割り当て、それらをprint_rしました。それはデータの巨大なジャンクに現れます。

テーブルフォームに表示するにはどうすればよいですか? それとも、表示する前にデータを個々のファイルまたはデータベースに保存する必要がありますか?

私はPHPが初めてなので、これを実装する方法がわかりません。

4

2 に答える 2

2

JSONは多次元配列であり、私の意見では、JSONを表示する最も簡単な方法は

var_dump($json_array);

ただし、これは参照しているデータのチャンクである可能性があります。

テーブルは本質的に2次元であり、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 に答える