我的代码在某种程度上起作用,因为它将我的数组反映到一个表格中 - 但问题是,它反映了所有领域。
我想只显示名称,培训师和状态字段。我无法理解如何做到这一点。
阵列
[{
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; ?>
答案 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>