如何检查数组中的值,并在php/lavel中的数组中找到值时打印该值



我正在做一个项目。在该项目中,我必须制作一个报告,其中使用复选框从表单中选中的所有值都存储在"选中"列中,而未选中复选框的值则存储在"未选中"列。这些值按照要求完美地存储。但是每当我检查这些列时,比如如果值在arechecked列中,那么它应该打印1 else 0。但在我的情况下,代码没有按照条件打印,这让我有点困惑。下面是我的控制器:

public function scoreSheet(Request $request)
{
$query = new QCFeedback;
$users = User::all();
$cru_users = CRUUser::all();

$feedbacks = $query->paginate(20);
return view('qc-feedback-audits.score-sheet', compact('feedbacks', 'users', 'cru_users'));
}

这里$feedbacks是一个变量,用于收集qc_feedings中的所有数据。以下两张图片将进一步阐述这个问题:表格的结构数据是如何插入的,特别是在列中是选中的是未选中的检查的方式是,如果有复选框,则在视图中显示1其他0是:

@foreach ($feedbacks as $feedback)
<tr>
<td>{{ $feedback->record_id ?? '-' }}</td>
<td>{{ $feedback->cru_user->cru_id ?? '-' }}</td>
@php
$areChecked = json_decode($feedback->areChecked);
$areUnChecked = json_decode($feedback->areUnChecked);
@endphp
@if (array_search('score-1', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-6', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-11 ', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-2', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-7', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-12', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-3', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-8', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-13', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-4', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-9', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-14', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-19', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-5', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-10', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-15', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-20', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-18', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-17', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@if (array_search('score-16', $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
<td>
{{ count($areChecked) }}
</td>
<td>{{ (count($areChecked) / 20) * 100 }}</td>
<td></td>
<td></td>
<td>{{ $feedback->elevation_audit->name ?? '-' }}</td>
</tr>
@endforeach

在上面的代码中,除了值为1或0之外,所有数据都被准确地检索到。它只是在检查过程中丢失或跳过了值。如果检查了值,则显示1 else 0。

Assalomu aleykum,如果在数组中未找到值,则array_search返回false,否则返回值的键。如果键的值为0,这实际上是错误的。在您需要In_array函数的情况下,该函数会检查数组中的值。

使用此代码类似于:


@php
$check = ['score-1','score-6','score-11','score-2','score- 
7','score-12','score-3','score-8','score-13','score- 
4','score-9','score-14','score-19','score-5','score- 
10','score-15','score-20','score-18','score-17','score- 
16',];
@endphp

@foreach ($feedbacks as $feedback)
<tr>
<td>{{ $feedback->record_id ?? '-' }}</td>
<td>{{ $feedback->cru_user->cru_id ?? '-' }}</td>
@php
$areChecked = json_decode($feedback->areChecked);
$areUnChecked = json_decode($feedback->areUnChecked);
@endphp
@foreach ($check as $key)
@if (in_array($key, $areChecked))
<td>{{ 1 }}</td>
@else
<td>{{ 0 }}</td>
@endif
@endforeach

<td>
{{ count($areChecked) }}
</td>
<td>{{ (count($areChecked) / 20) * 100 }}</td>
<td></td>
<td></td>
<td>{{ $feedback->elevation_audit->name ?? '-' }}</td>
</tr>
@endforeach

最新更新