Добрый день!
В большей степени хотелось бы понять "как правильно", поэтому решил спросить совета.
Выполняю условие:
if (!empty($filter) && in_array($attributes_id, $filter)) {
$checked = ' checked';
} else {
$checked = null;
}
$attributes_id
имеет тип (int), в массиве
$filter
у значений тип (string). Я взял за правило, где это возможно, выполнять проверку не только по значению, но и по типу, in_array() дает такую возможность, если указать третий параметр true.
Но если проверять
in_array($attributes_id, $filter, true)
проверка естественно не проходит. Скорректировал проверку до следующего вида:
in_array((string)$attributes_id, $filter, true)
Но как мне кажется, правильнее приводить id к целочисленному значению. Ввиду этого несколько вопросов:
- Насколько корректно проверка
in_array((string)$attributes_id, $filter, true)
, имею ввиду что attributes_id приведен к строке
- Если приводить значения массива к целочисленным, как правильнее всего это сделать? У одно предположение, перебрать его как-то так:
if ($filter){
$data = [];
foreach ($filter as $key => $value){
$data[$key] = (int)$value;
}
}
if (!empty($filter) && in_array($attributes_id, $data, true)) {
$checked = ' checked';
} else {
$checked = null;
}