Фильтровать элемент из списка PHP

У меня есть форма, которая в настоящее время отображает флажки из диапазона в атрибуте на конкретном 5.6. Что мне нужно сделать, это взять этот список, но теперь отфильтровать один элемент.
Я хочу отфильтровать mpdID из 81,
Код, используемый для отображения:

<div class="clearfix">
<strong><?php  echo t('Choose Day')?></strong>
<?php
if($price_dates){
foreach($price_dates->dates as $break){
?>
<div class="input">
<input type="checkbox"name="mdpID[]"value="<?=$break['mdpID']?>"<?php
if($ticketID['mdpID'] == $break['mdpID']){
echo 'checked';
}
?>
/>
<?=date('D M jS',strtotime($break['date']))?> - £
<?=$break['price']?>
</div>

<?php
}
}
?>
</div>

0

Решение

Ты можешь использовать continue сразу после вашего foreach блок начинается. Что-то вроде этого:

foreach block...

if ($break['mdpID'] == 81) {
continue;
}
0

Другие решения

Ты ищешь array_filter

пример

  $mp_ids = [1,5,81,81,23];

$mp_ids = array_filter($mp_ids, function($value){
return $value != 81;
});

Если вы просто сделаете это выше представления, тогда вы можете оставить эту логику вне поля зрения и сделать вещи намного чище.

Большая часть бизнес-логики должна быть оставлена ​​вне поля зрения, иначе все будет быстро захламлено.

Сейчас $mp_ids будет массив, содержащий любое значение, кроме 81. Вы можете обернуть это в функцию, чтобы сделать его более гибким.

Пользовательская функция фильтра для идентификаторов

  function filter_ids($array_of_ids, $exclude) {
return array_filter($array_of_ids, function($value) use ($exclude){
return $value != $exclude;
});
}

filter_ids($mp_ids, 81);
// returns array(3) { [0]=> int(1) [1]=> int(5) [4]=> int(23) }
// return the data to your view to loop and generate the checkboxes

Это всего лишь простой пример, и его определенно можно улучшить. Но должен дать вам представление о том, куда идти дальше, чтобы дать вам больше гибкости.

Спектакль

Это улучшит вашу производительность в цикле foreach, так как он только просматривает элементы, которые должен выводить, и не должен постоянно проверять, следует или нет.

0

По вопросам рекламы [email protected]