【发布时间】:2016-04-25 14:44:17
【问题描述】:
我调用一些 API 来填充一个数组。最终输出如下所示
Array
(
[0] => Array
(
[leadData] => Array
(
[LeadID] => 1232806
[DateIdentified] => 21/04/2016
[Client] => Prospect 1
[LeadName] => Test
[Owner] => Some Owner
[Value] => 2160.00
[Status] => 70%
)
[clientData] => Array
(
[BusinessStructure] =>
[IsProspect] => No
)
[quoteData] => Array
(
[QuoteID] => Q0020
[ProjectName] => Test
[Amount] => 1800.00
[AmountTax] => 360.00
[AmountIncludingTax] => 2160.00
[EstimatedCost] => 450.00
[EstimatedCostTax] => 90.00
[EstimatedCostIncludingTax] => 540.00
)
[customData] => Array
(
[0] => Array
(
[Lead Type] => New
)
[1] => Array
(
[Month] => June
)
)
)
[1] => Array
(
[leadData] => Array
(
[LeadID] => 1230279
[DateIdentified] => 19/04/2016
[Client] => Bank1
[LeadName] => test 3
[Owner] => Some Owner
[Value] => 36000.00
[Status] => 50%
)
[clientData] => Array
(
[BusinessStructure] =>
[IsProspect] => No
)
[quoteData] => Array
(
[QuoteID] => Q0016
[ProjectName] => test 3
[Amount] => 30000.00
[AmountTax] => 6000.00
[AmountIncludingTax] => 36000.00
[EstimatedCost] => 0.00
[EstimatedCostTax] => 0.00
[EstimatedCostIncludingTax] => 0.00
)
)
)
需要注意的一点是,有时并非所有信息都在那里,只是因为它不可用。所以你可以看到 Array 0 有一些 customData 而 Array 1 没有。其他元素甚至可能没有 quoteData 部分等。
所以我的刀片模板现在有了这些信息。我基本上想显示所有数据,但如果它不可用,只显示一个空单元格。所以我有以下标题
<table class="table table-bordered table-hover additionalMargin alignment">
<tr class="col-md-12 noPadding">
<thead>
<tr>
<th>Lead ID</th>
<th>Client Name</th>
<th>Is Prospect</th>
<th>Business Structure</th>
<th>Quote ID</th>
<th>Project Name</th>
<th>Amount</th>
<th>Amount Tax</th>
<th>Amount inc Tax</th>
<th>Cost</th>
<th>Cost Tax</th>
<th>Cost inc Tax</th>
<th>Type</th>
<th>Month</th>
</tr>
</thead>
</tr>
<tbody>
</tbody>
</table>
但是,在 tbody 中,我正在做的事情似乎很混乱,我似乎可以在正确的位置获取数据的唯一方法是检查所有内容,例如
@if(is_array($leadArray))
@foreach($leadArray as $array)
<tr>
<td>
@if(!empty($array['leadData']))
{{ $array['leadData']['LeadID'] }}
@endif
</td>
<td>
@if(!empty($array['leadData']))
{{ $array['leadData']['Client'] }}
@endif
</td>
<td>
@if(!empty($array['clientData']))
{{ $array['clientData']['IsProspect'] }}
@endif
</td>
<td>
@if(!empty($array['clientData']))
{{ $array['clientData']['BusinessStructure'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['QuoteID'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['ProjectName'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['Amount'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['AmountTax'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['AmountIncludingTax'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['EstimatedCost'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['EstimatedCostTax'] }}
@endif
</td>
<td>
@if(!empty($array['quoteData']))
{{ $array['quoteData']['EstimatedCostIncludingTax'] }}
@endif
</td>
@if(!empty($array['customData']))
@foreach($array['customData'] as $data)
<td>
@if(!empty($data['Lead Type']))
{{ $data['Lead Type'] }}
@endif
</td>
<td>
@if(!empty($data['Month']))
{{ $data['Month'] }}
@endif
</td>
@endforeach
@else
<td></td>
<td></td>
@endif
</tr>
@endforeach
@endif
有没有更简洁的方法来做到这一点?还是这是我唯一的选择?
谢谢
【问题讨论】:
-
您可以使用
{{ @$array['leadData']['Client'] }}在数据丢失时抑制错误。或者以使用nulls 填充任何缺失数据的方式对数组进行预处理。 -
@ceejayoz,很有趣。它在任何地方都有记录吗?如果不是,它是如何工作的?
-
@AlexeyMezenin
@是 PHP 的错误抑制运算符。有关详细信息,请参阅php.net/manual/en/language.operators.errorcontrol.php。它应该很少使用,但您的看起来可能是一个合适的用例。 -
@ceejayoz,谢谢。
-
@AlexeyMezenin 查看@JoelHinz 的答案以获得更好的选择。我忘了 Laravel 的
or。
标签: laravel laravel-5 laravel-blade