这是我在SO中的第一个问题,试图尽可能多地解释。
我正在使用mysql中的存储过程创建报告。我使用laravel4以下面的格式获取std对象数组。我可以让这个工作得很好
Array
(
[0] => stdClass Object
(
[date] => 2015-08-01
[Tuition Fee] => 1000
[Hostel] => 500
)
[1] => stdClass Object
(
[date] => 2015-10-01
[Tuition Fee] => 1500
[Hostel] =>
)
)
我想将其转换为HTML表格。我可以使用foreach循环
来做到这一点date | Tuition Fee | Hostel
2015-08-01 | 1000 | 500
2015-10-01 | 1500 |
视野中的代码:
@foreach($x as $user)
{{ $user->date}}
{{ $user->Tuition Fee }}
@endforeach
然而,该表没有固定的列标题。根据报告,它可以是5列或7列。 eg-
dateToCharge | Tuition Fee | Miscalleneous Fee | Development Fee
请在这方面提供帮助,因为我在过去10天里一直在敲头。
答案 0 :(得分:0)
为了动态生成列标题,您可以尝试执行以下操作:
首先,您需要将对象转换为arrays
(在您的php代码中使用get_object_vars
方法):
$users = array();
foreach($x as $user){
$users[] = get_object_vars($user);
}
之后,您将使用以下数组格式包含先前的对象:
[0] => array(3) {
['date'] => '2015-08-01'
['Tuition Fee'] => 1000
['Hostel'] => 500
}
将列提取成一个单独的数组(此处名为columns
):
$columns = array();
foreach($users as $user){
foreach($user as $column => $value){
$columns[] = $column;
}
break; //since we'd want to loop only once to get the column names
}
在您的视图中,迭代columns
数组和users
数组以获取所需的结果表。
<table>
<thead>
<tr>
@foreach($columns as $column)
<th>{{ $column }}</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
@foreach($columns as $column)
<td>{{ $user[$column] }}</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>