PHP数组到HTML表问题

时间:2017-03-11 15:32:31

标签: php arrays

我的代码在某种程度上起作用,因为它将我的数组反映到一个表格中 - 但问题是,它反映了所有领域。

我想只显示名称,培训师和状态字段。我无法理解如何做到这一点。

阵列

[{
id: "8001073",
name: "Castarnie",
silk: "c20170311her/00829186.jpg",
cloth_number: "4",
jockey: "Harry Cobden",
trainer: "Robert Walford",
weight_value: "165",
weight_unit: "pounds",
form: "P-2P2PF",
bred: "GB",
last_run: "21",
status: "WINNER"
},
{
id: "7164976",
name: "Try It Sometime",
silk: "c20170311her/00026136.jpg",
cloth_number: "8",
jockey: "Mikey Hamill",
trainer: "Sheila Lewis",
weight_value: "140",
weight_unit: "pounds",
form: "654529",
bred: "IRE",
last_run: "20",
status: "LOSER"
}
]

,PHP代码看起来像

<?php if (count($obj) > 0): ?>
<table>
  <thead>
    <tr>
      <th><?php echo implode('</th><th>', array_keys(current($obj))); ?></th>
    </tr>
  </thead>
  <tbody>
<?php foreach ($obj as $row): array_map('htmlentities', $row); ?>
    <tr>
      <td><?php echo implode('</td><td>', $row); ?></td>
    </tr>
<?php endforeach; ?>
  </tbody>
</table>
<?php endif; ?>

2 个答案:

答案 0 :(得分:1)

$jsondata = file_get_contents($api_url); 
$obj = json_decode($jsondata, true);
if (is_array($obj)){
    echo "<table>";
    echo "<th><td>Name</td><td>Trainer</td><td>Status</td></tr>";
    foreach ($obj as $row){
        array_map('htmlentities', $row);
        echo "<tr>";
        echo "<td>".$row["name"]."</td>";
        echo "<td>".$row["trainer"]."</td>";
        echo "<td>".$row["status"]."</td>";
        echo "</tr>";
    }
    echo "</table>";
}

答案 1 :(得分:0)

调用array_map()修改每行htmlentities中的每个值是没有意义的,因为您只显示其中的三个 - 只修改您要显示的内容。

代码:(Demo

$json_data=file_get_contents($api_url);    
$objects=json_decode($json_data);
if(is_array($objects) && sizeof($objects)){
    echo '<table><thead><tr>';
        echo '<th>Name</th><th>Trainer</th><th>Status</th>';
    echo '</tr></thead><tbody>';
    foreach($objects as $row){
        echo '<tr>';
            echo '<td>',htmlentities($row->name),'</td>';
            echo '<td>',htmlentities($row->trainer),'</td>';
            echo '<td>',htmlentities($row->status),'</td>';
        echo '</tr>';
    }
    echo '</tbody></table>';
}else{
    echo 'Invalid or empty json data received';
}

输出:

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Trainer</th>
            <th>Status</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Castarnie</td>
            <td>Robert Walford</td>
            <td>WINNER</td>
        </tr>
        <tr>
            <td>Try It Sometime</td>
            <td>Sheila Lewis</td>
            <td>LOSER</td>
        </tr>
    </tbody>
</table>