我使用此代码在多个属性名称中显示每个记录的特定用户。虽然我想显示1个名称而不是多个,包括他们的ID。
@foreach( $records as $record )
@if( $record->investment_type == null )
<tr>
<td>{{ $record->client_id }}</td>
<td>{{ $record->firstname }} {{ $record->lastname }}</td>
<td>{{ $record->name }}</td>
<td class="details-control"></td>
</tr>
@endif
@endforeach
这是我当前代码的输出。
虽然这是我想要的样子。
我试过,array_unique
但输出错误
源代码来自:php Removes duplicate values in foreach并且刚刚从海报上解决了问题。但它不适合我。
非常感谢你的帮助。
更新
以下是来自$records
的{{1}}的输出。
这是控制器内部的代码。
var_dump
答案 0 :(得分:0)
laravel语法不太熟悉。您可以根据需要进行转换。 无论如何,要做到这一点,你需要检查以前的值。我假设这是按名称排序的。
首先创建上一个变量
<?php $prev_value = null;?>
以下是我们检查之前值是否相同的代码
<?php if($prev_value == ($record->client_id)):?>
<td></td>
<td></td>
<?php else: ?>
<td>{{ $record->client_id }}</td>
<td>{{ $record->firstname }} {{ $record->lastname }}</td>
<?php endif; ?>
在循环结束时,只需在先前的值变量中添加当前值
<?php $prev_value = $record->client_id; ?>
整码
<?php $prev_value = null;?>
<?php foreach( $records as $record ): ?>
<?php if( $record->investment_type == null ): ?>
<tr>
<?php if($prev_value == ($record->client_id)):?>
<td></td>
<td></td>
<?php else: ?>
<td>{{ $record->client_id }}</td>
<td>{{ $record->firstname }} {{ $record->lastname }}</td>
<?php endif; ?>
<td>{{ $record->name }}</td>
<td class="details-control"></td>
<?php $prev_value = $record->client_id; ?>
</tr>
<?php endif; ?>
<?php endforeach; ?>
答案 1 :(得分:0)
您不能使用array_unique,因为您有一个对象数组。 创建一个Id数组和一个名称数组, 在每个循环中,您将当前id和当前名称添加到这些数组中,然后在创建之前检查当前数据是否在数组中,如果不是,则将它们添加到它们中,如果它们已经存在则创建一个空。
当然,您必须检查第二个循环中的Is in数组是否显示在第一行的最小值。 请注意,此方法很脏,因为您在视图中执行了一些逻辑操作。 最好的方法是在你的模型上做到这一点。