简体   繁体   中英

How to show json data with column name in php

i have some JSON data i am able to retrieve data out of it but i want data to be displayed with columns
this the JSON

{"ObjectId":43,"ObjectName":"MEGA MELA","ObjectTitle":"Event Created by API","ObjectDescription":"NEW EVENT BY API","ObjectLabel":"","ObjectTypeId":33,"MaxFieldsExpected":5,"ObjectValueType":null,"ObjectControlType":"","IsDeleted":true,"CreatedDate":"2019-05-22T07:56:03.767","CreatedBy":null,"EditedDate":null,"EditedBy":null,"DeletedDate":null},{"ObjectId":44,"ObjectName":"Event x11","ObjectTitle":"Event Created by API","ObjectDescription":"NEW EVENT BY API","ObjectLabel":"","ObjectTypeId":33,"MaxFieldsExpected":5,"ObjectValueType":null,"ObjectControlType":"","IsDeleted":true,"CreatedDate":"2019-05-23T00:33:50.7","CreatedBy":null,"EditedDate":null,"EditedBy":null,"DeletedDate":null}]}

here is what i am doing right now

  $jsonData = json_decode($data, TRUE);

  foreach ($jsonData as $d) {
    foreach ($d as $ins) {  
  echo "<h3>".$ins['ObjectName']."</h3>";
  echo "<h3>".$ins['ObjectDescription']."</h3>";
    }
}

OutPut:

MEGA MELA
NEW EVENT BY API
Event x11
NEW EVENT BY API

i want it in this format

ObjectId  | ObjectName | ObjectTitle           | ObjectDescription | ObjectLabel | ObjectTypeId | MaxFieldsExpected | ObjectValueType | ObjectControlType | IsDeleted | CreatedDate | CreatedBy | EditedDate |  EditedBy
43        |  MEGA MELA |  Event Created by API | NEW EVENT BY API | .............................................................................. 

above i am getting data with help of array key now i want extracting keys from JSON like ObjectId or ObjectName making them header of table and showing all the data in columns

Used an old gist for array2table from here : http://www.aidanlister.com/2004/04/converting-arrays-to-human-readable-tables/

<?php
function array2table($array, $recursive = false, $null = '&nbsp;')
{
    // Sanity check
    if (empty($array) || !is_array($array)) {
        return false;
    }
    if (!isset($array[0]) || !is_array($array[0])) {
        $array = array($array);
    }
    // Start the table
    $table = "<table>\n";
    // The header
    $table .= "\t<tr>";
    // Take the keys from the first row as the headings
    foreach (array_keys($array[0]) as $heading) {
        $table .= '<th>' . $heading . '</th>';
    }
    $table .= "</tr>\n";
    // The body
    foreach ($array as $row) {
        $table .= "\t<tr>" ;
        foreach ($row as $cell) {
            $table .= '<td>';
            // Cast objects
            if (is_object($cell)) { $cell = (array) $cell; }
            if ($recursive === true && is_array($cell) && !empty($cell)) {
                // Recursive mode
                $table .= "\n" . array2table($cell, true, true) . "\n";
            } else {
                $table .= (strlen($cell) > 0) ?
                    htmlspecialchars((string) $cell) :
                $null;
            }
            $table .= '</td>';
        }
        $table .= "</tr>\n";
    }
    $table .= '</table>';
    return $table;
}
$data ='[{"ObjectId":43,"ObjectName":"MEGA MELA","ObjectTitle":"Event Created by API","ObjectDescription":"NEW EVENT BY API","ObjectLabel":"","ObjectTypeId":33,"MaxFieldsExpected":5,"ObjectValueType":null,"ObjectControlType":"","IsDeleted":true,"CreatedDate":"2019-05-22T07:56:03.767","CreatedBy":null,"EditedDate":null,"EditedBy":null,"DeletedDate":null},{"ObjectId":44,"ObjectName":"Event x11","ObjectTitle":"Event Created by API","ObjectDescription":"NEW EVENT BY API","ObjectLabel":"","ObjectTypeId":33,"MaxFieldsExpected":5,"ObjectValueType":null,"ObjectControlType":"","IsDeleted":true,"CreatedDate":"2019-05-23T00:33:50.7","CreatedBy":null,"EditedDate":null,"EditedBy":null,"DeletedDate":null}]';
$jsonData = json_decode($data, TRUE);
echo array2table($jsonData);
?>

DEMO: https://3v4l.org/0n27Y

on the above example, you can use the key to print the filed name and value will be the data.

here we can loop the field names first to create the heading

I am using table here.

<table>
 <?php foreach ($d as $ins) { ?>

  //printing field heads
  <tr>
  <?php 
   foreach ($ins as $key=>$value) {  
     echo "<td><h3>".$key."</h3></td>";
   } ?>
  </tr>

  //printing value row
  <tr>
  <?php
   foreach ($ins as $key=>$value) {  
     echo "<td><h3>".$value."</h3></td>";
   } ?>
  </tr>
  } ?>
</table>

第二个foreach应该看起来像: foreach ($d as $key => $ins)然后在$key变量处得到索引。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM