背景
フラグのどれか1つでも'1'だったら表示する、というロジックを組むときに
フラグがたくさんあった場合、そのままif文の条件にぶち込むと、かっこ悪い。
かっこ悪い例
@if ($user->sample1_flag === 1 || $user->sample2_flag === 1 || $user->sample3_flag === 1 ||
$user->sample4_flag === 1 || $user->sample5_flag === 1 || $user->sample6_flag === 1 || $user->sample7_flag === 1)
<p>表示されたよ</p>
@endif
結論
in_arrayを使った。
@php
$sampleFlag = in_array(1, [
$user->sample1_flag,
$user->sample2_flag,
$user->sample3_flag,
$user->sample4_flag,
$user->sample5_flag,
$user->sample6_flag,
$user->sample7_flag,
], true);
@endphp
@if ($sampleFlag)
<p>表示されたよ</p>
@endif
ちなみに変数をあらかじめboolean型で扱うというのもリーダブルコードという点で良い。
余談
in_arrayの第三引数には極力trueを入れたほうがいいらしい
定義(PHP 4, PHP 5)
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
falseのままだと==チェック
trueにすると型チェック(===の比較)