【问题标题】:How do multiple array object loop in JSON using PHP如何使用 PHP 在 JSON 中循环多个数组对象
【发布时间】:2018-05-29 14:29:47
【问题描述】:

我的JSON格式文件是这样的

[
    {
        "closerate":"97.29",
        "mcap":"112579.55263540648",
        "newdate":"19-Mar-18",
        "out_share":"1157.1544"
    },
    {
        "pelast4q":"20.83297644539615",
        "amount":"4.67"
    }
]

我想通过循环显示数据

foreach ($data as  $nt) {
   echo "<tr class='table_row_grey'>
             <td ><strong>Price Date</strong></td>
              <td >  $nt[newdate]</td>";

   echo "<tr class='table_row_white'>
              <td ><strong>Close Price</strong></td>
              <td >PKR</td>
             <td > "  . number_format($nt[closerate],2) . " </td></tr>";
   echo "<tr class='table_row_grey'>
              <td ><strong>Shares</strong></td>
            <td >Mn</td>
            <td >" . number_format($nt[out_share],2) . "</td></tr>";
   echo "<tr class='table_row_white'>
            <td ><strong>M.Cap</strong></td>
            <td >PKR Mn</td>
           <td >" . number_format($nt[mcap],0) . "</td></tr>";
    echo "<tr class='table_row_grey'>
                   <td ><strong>P/E</strong></td>
                    <td >Trailing (4Q)</td>
                  <td > " . number_format($nt[pelast4q],2) . "</td></tr>";

}

// Close the table
echo "</table>";

当我使用循环两次在表格中显示时该怎么办

【问题讨论】:

  • 到底是什么问题? (除了缺少&lt;/tr&gt;,列数不一致)
  • 你是如何创建这个 json 输出的?
  • 一个问题在我应用循环时在表格中显示两次
  • 我创建了一个 json 格式的文件,像这样 $file_name = 'table1.json'; $mydata= json_encode($datatable1); if(file_put_contents($path,$mydata)){ echo $file_name . '文件创建'; }

标签: php html json


【解决方案1】:

你需要:

$data = json_decode([{"closerate":"97.29","mcap":"112579.55263540648","newdate":"19-Mar-18","out_share":"1157.1544"},{"pelast4q":"20.83297644539615","amount":"4.67"}]);

【讨论】:

    【解决方案2】:
    $data_arr = file_get_contents('test.json');
    $data = json_decode($data_arr, true);
    $new_date = NULL;
    $closerate = NULL;
    $mcap = NULL;
    $pelast4q = NULL;
    foreach ($data as $nt) {
        if (! empty($nt["newdate"])) {
            $new_date = $nt["newdate"];
        }
        if (! empty($nt["closerate"])) {
            $closerate = number_format($nt["closerate"], 2);
        }
        if (! empty($nt["out_share"])) {
            $out_share = number_format($nt["out_share"], 2);
        }
        if (! empty($nt["mcap"])) {
            $mcap = number_format($nt["mcap"], 0);
        }
        if (! empty($nt["pelast4q"])) {
            $pelast4q = number_format($nt["pelast4q"], 2);
        }
    }
    echo "<tr class='table_row_grey'>
                 <td ><strong>Price Date</strong></td>
                  <td >. $new_date.</td>";
    
    echo "<tr class='table_row_white'>
                  <td ><strong>Close Price</strong></td>
                  <td >PKR</td>
                 <td > " . $closerate . " </td></tr>";
    echo "<tr class='table_row_grey'>
                  <td ><strong>Shares</strong></td>
                <td >Mn</td>
                <td >" . $out_share . "</td></tr>";
    echo "<tr class='table_row_white'>
                <td ><strong>M.Cap</strong></td>
                <td >PKR Mn</td>
               <td >" . $mcap . "</td></tr>";
    echo "<tr class='table_row_grey'>
                       <td ><strong>P/E</strong></td>
                        <td >Trailing (4Q)</td>
                      <td > " . $pelast4q . "</td></tr>";
    
    // Close the table
    echo "</table>";
    

    【讨论】:

    • 我不使用 if 条件我有很多数据显示在 的表中我想使用循环解决这个问题
    【解决方案3】:

    首先将json转为数组

    $data = json_decode('[ { "closerate":"97.29", "mcap":"112579.55263540648", "newdate":"19-Mar-18", "out_share":"1157.1544" }, { "pelast4q":"20.83297644539615", "amount":"4.67" } ]',true);
    

    然后循环你的数据

    echo "<table >";
    foreach ($data as  $nt) {
    
       echo "<tr class='table_row_grey'> <td ><strong>Price Date</strong></td> <td >  ". isset($nt['newdate']) && !empty($nt['newdate'])  ? $nt['newdate'] : "-" ."</td></tr>";
    
       echo "<tr class='table_row_white'>
                  <td ><strong>Close Price</strong></td>
                  <td >PKR</td>
                 <td > "  . isset($nt['closerate']) && !empty($nt['closerate']) ? number_format($nt['closerate'],2) : "-" . " </td></tr>";
       echo "<tr class='table_row_grey'>
                  <td ><strong>Shares</strong></td>
                <td >Mn</td>
                <td >" . isset($nt['out_share']) && !empty($nt['out_share']) ? number_format($nt['out_share'],2) : "-" . "</td></tr>";
       echo "<tr class='table_row_white'>
                <td ><strong>M.Cap</strong></td>
                <td >PKR Mn</td>
               <td >" . isset($nt['mcap']) && !empty($nt['mcap']) ? number_format($nt['mcap'],0) :"" . "</td></tr>";
        echo "<tr class='table_row_grey'>
                       <td ><strong>P/E</strong></td>
                        <td >Trailing (4Q)</td>
                      <td > " . isset($nt['pelast4q']) && !empty($nt['pelast4q'])  ? number_format($nt['pelast4q'],2) : "" . "</td></tr>";
    
    }
    
    // Close the table
    echo "</table>";
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 2016-10-10
      • 2020-03-24
      • 2019-02-27
      • 1970-01-01
      • 2021-03-06
      • 2019-08-26
      • 2019-10-02
      相关资源
      最近更新 更多