在 Laravel Blade 视图中将每个数组值插入新行
Insert each array value into new line in Laravel Blade view
现在,当我对数组进行排序和计数后,我想在 blade 模板上显示结果。页面看起来像这样
@foreach($best as $info)
<li class="list-group-item">
<div class="row">
<div class="col-md-2 col-xs-12">
<span class="col-xs-6 "><strong>User Number:</strong></span> {{ $info->user_id }}
</div>
<div class="col-md-3 col-xs-12">
<span class="col-xs-6">Username:</span> {{ $info->username }}
</div>
<div class="col-md-3">
<span class="col-xs-6">Points:</span>
@foreach($sums as $value => $sum)
{{$sum}}
@endforeach
</div>
</div>
</li>
@endforeach
在控制器中没什么特别的:
$best = Users::all();
$sums = array_count_values($product_ids);
return View::make('users.statistics', [
'best' => $best,
'sums' => $sums
]);
有问题的部分是blade
中的这个
<div class="col-md-3">
<span class="col-xs-6">Points:</span>
@foreach($sums as $value => $sum)
{{$sum}}
@endforeach
</div>
如果我有两个用户,我应该得到类似
的输出
User Number Username Points
1 user1 10
2 user2 11
因为这第二个 foreach,我得到了(注意点列)
User Number Username Points
1 user1 10 11
2 user2 10 11
有没有办法在它自己的行上管理每个点
var_dump($product_ids);
array(5) {
[0]=> int(2)
[1]=> int(1)
[2]=> int(1)
[3]=> int(1)
[4]=> int(1)
}
您可以尝试这样的操作:
@foreach($best as $info)
<li class="list-group-item">
<div class="row">
<div class="col-md-2 col-xs-12">
<span class="col-xs-6 "><strong>User Number:</strong></span> {{ $info->user_id }}
</div>
<div class="col-md-3 col-xs-12">
<span class="col-xs-6">Username:</span> {{ $info->username }}
</div>
<div class="col-md-3">
<span class="col-xs-6">Points:</span>
{{$sums[$info->user_id]}}
</div>
</div>
</li>
@endforeach
您正在使用名为 array_count_values
的方法。这计算了数组的所有值。
我猜想 $products_ids
是一个包含用户 ID 的数组。
因此,如果您的 $products_ids
看起来像:
array(1,2,1,3,4,4)
array_count_values()
将 return 类似于:
[user_id] => int(number_of_times_that_user_id_appear)
所以:
array(4) {
[1]=> int(2)
[2]=> int(1)
[3]=> int(1)
[4]=> int(2)
}
所以用户1有2分,用户2有 1点,用户3有1点,用户4有2分。
更多关于此功能的文档:http://php.net/manual/en/function.array-count-values.php
现在,当我对数组进行排序和计数后,我想在 blade 模板上显示结果。页面看起来像这样
@foreach($best as $info)
<li class="list-group-item">
<div class="row">
<div class="col-md-2 col-xs-12">
<span class="col-xs-6 "><strong>User Number:</strong></span> {{ $info->user_id }}
</div>
<div class="col-md-3 col-xs-12">
<span class="col-xs-6">Username:</span> {{ $info->username }}
</div>
<div class="col-md-3">
<span class="col-xs-6">Points:</span>
@foreach($sums as $value => $sum)
{{$sum}}
@endforeach
</div>
</div>
</li>
@endforeach
在控制器中没什么特别的:
$best = Users::all();
$sums = array_count_values($product_ids);
return View::make('users.statistics', [
'best' => $best,
'sums' => $sums
]);
有问题的部分是blade
中的这个<div class="col-md-3">
<span class="col-xs-6">Points:</span>
@foreach($sums as $value => $sum)
{{$sum}}
@endforeach
</div>
如果我有两个用户,我应该得到类似
的输出User Number Username Points
1 user1 10
2 user2 11
因为这第二个 foreach,我得到了(注意点列)
User Number Username Points
1 user1 10 11
2 user2 10 11
有没有办法在它自己的行上管理每个点
var_dump($product_ids);
array(5) {
[0]=> int(2)
[1]=> int(1)
[2]=> int(1)
[3]=> int(1)
[4]=> int(1)
}
您可以尝试这样的操作:
@foreach($best as $info)
<li class="list-group-item">
<div class="row">
<div class="col-md-2 col-xs-12">
<span class="col-xs-6 "><strong>User Number:</strong></span> {{ $info->user_id }}
</div>
<div class="col-md-3 col-xs-12">
<span class="col-xs-6">Username:</span> {{ $info->username }}
</div>
<div class="col-md-3">
<span class="col-xs-6">Points:</span>
{{$sums[$info->user_id]}}
</div>
</div>
</li>
@endforeach
您正在使用名为 array_count_values
的方法。这计算了数组的所有值。
我猜想 $products_ids
是一个包含用户 ID 的数组。
因此,如果您的 $products_ids
看起来像:
array(1,2,1,3,4,4)
array_count_values()
将 return 类似于:
[user_id] => int(number_of_times_that_user_id_appear)
所以:
array(4) {
[1]=> int(2)
[2]=> int(1)
[3]=> int(1)
[4]=> int(2)
}
所以用户1有2分,用户2有 1点,用户3有1点,用户4有2分。
更多关于此功能的文档:http://php.net/manual/en/function.array-count-values.php