[英]Creating a table from a multidimensional array in PHP
我正在從API接收具有可變字段數的數組,並且正在嘗試將其放入表中。
示例對象如下所示:
array
'silver' =>
array
'assets' =>
array
'Article' => float 2
'ROS_Medium_1' => float 37704
'ROS_Medium_2' => float 37711
'ROS_Medium_3' => float 37546
'ROS_Leaderboard_Footer' => float 37941
'ROS_Leaderboard_Infinite Scroll' => float 3636
'price' => float 375
'discount' => int 0
'banner_cpm' => float 12.79
'banner_sov' => float 0.0099
'content_cpm' => float 150
'content_sov' => float 0.0028
'fixed_cpm' => float 0
'blended_cpm' => float 26.26
'gold' =>
array
'assets' =>
array
'Article' => float 2
'ROS_Leaderboard' => float 15212
'ROS_CCF' => float 1
'ROS_Halfpage' => float 15212
'ROS_Medium_1' => float 12459
'ROS_Medium_2' => float 12476
'ROS_Medium_3' => float 12476
'ROS_Leaderboard_Footer' => float 12390
'ROS_Leaderboard_Infinite Scroll' => float 1239
'price' => int 500
'discount' => int 0
'banner_cpm' => float 18.84
'banner_sov' => float 0.008
'content_cpm' => float 150
'content_sov' => float 0.0028
'fixed_cpm' => float 0
'blended_cpm' => float 29.8
列數等於頂級數組的數目(這里是銀和金)
頂層數組的數量可以變化,並且資產子數組可以隨數組而變化(請注意示例代碼中“金”數組如何具有更多資產)。 每個資產應有一行,數組中的每個鍵都應有一行。
將所有這些信息轉換為表格就緒格式的最干凈方法是什么? 據我所知,第一步是將所有獨特資產組成一個數組。 但是,如果沒有笨拙地嵌套一堆foreach循環,我不確定從哪里開始。
所需的輸出看起來像http://i.imgur.com/m0IJpUj.png
您可以通過多種方式來執行此操作,而我可以這樣進行:
樣本值:
$values_from_api = array(
'silver' => array(
'assets' => array(
'Article' => 2.0,
'ROS_Medium_1' => 37704.0,
'ROS_Medium_2' => 37711.0,
'ROS_Medium_3' => 37546.0,
'ROS_Leaderboard_Footer' => 37941.0,
'ROS_Leaderboard_Infinite Scroll' => 3636.0,
'price' => 375,
'discount' => 0,
'banner_cpm' => 12.79,
'banner_sov' => 0.0099,
'content_cpm' => 150.0,
'content_sov' => 0.0028,
'fixed_cpm' => 0.0,
'blended_cpm' => 26.26,
),
),
'gold' => array(
'assets' => array(
'Article' => 2.0,
'ROS_Leaderboard' => 15212.0,
'ROS_CCF' => 1.0,
'ROS_Halfpage' => 15212.0,
'ROS_Medium_1' => 12459.0,
'ROS_Medium_2' => 12476.0,
'ROS_Medium_3' => 12476.0,
'ROS_Leaderboard_Footer' => 12390.0,
'ROS_Leaderboard_Infinite Scroll' => 1239.0,
'price' => 500,
'discount' => 0,
'banner_cpm' => 18.84,
'banner_sov' => 0.008,
'content_cpm' => 150.0,
'content_sov' => 0.0028,
'fixed_cpm' => 0.0,
'blended_cpm' => 29.8,
),
),
);
首先,您應該刪除所有必要的列:
$left_columns = array();
foreach($values_from_api as $type_key => $type) {
foreach($type['assets'] as $columns => $value) {
$left_columns[] = $columns;
}
}
$left_columns = array_unique($left_columns);
收集必要的列后,可以像這樣打印它們:
<table border="1" cellpadding="10">
<thead>
<th width="200"></th>
<th>Silver</th>
<th>Gold</th>
</thead>
<tbody>
<?php foreach($left_columns as $key => $column_name): ?>
<tr>
<td><?php echo $column_name; ?></td>
<?php
foreach($values_from_api as $type_key => $type) {
foreach($type as $columns => $value) {
if(isset($value[$column_name])) {
echo "<td>$value[$column_name]</td>";
} else {
echo "<td>N/A</td>";
}
}
}
?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.