Есть 2 массива: $adminGenred, где хранатся жанры фильмов и $rowsG, где хранятся жанры у конкретного фильма.Я их хочу перебрать массив и сравнить если у этого фильма есть жанры боевик, то input должен быть checked, иначе простой инпут. Я написал
foreach ($adminGenred as $genre) {
$g = 0;
echo '<div class="genre-name">';
if (count($rowsG) != 0) {
foreach ($rowsG as $rowG) {
$g++;
if ($genre['id'] == $rowG['id']) {
$g++;
echo '<input checked class="option-input checkbox" type="checkbox" name="genre[]" value="' . $genre['id'] . '">';
echo '<span class="text"> ' . $genre['genre'] . '</span>.';
} else {
if ($g <= 1) {
echo '<input class="option-input checkbox" type="checkbox" name="genre[]" value="' . $genre['id'] . '">';
echo '<span class="text"> ' . $genre['genre'] . '</span>.';
}
}
}
}
echo '</div>';
}
получилось вот это, если этот жанр есть в фильме то ставиться и checked и простой input
Пытался выцепить это дело как-то счетчиком, не получилось. Не могу понять данное поведение. В чем может быть проблема?
Вашу проблему можно решить например так:
foreach ($adminGenred as $genre) {
echo '<div class="genre-name">';
// вводим флажок
$isSelected = false;
if (count($rowsG) != 0) {
foreach ($rowsG as $rowG) {
if ($genre['id'] == $rowG['id']) {
echo '<input checked class="option-input checkbox" type="checkbox" name="genre[]" value="' . $genre['id'] . '">';
echo '<span class="text"> ' . $genre['genre'] . '</span>.';
// Отмечаем что данный жанр выбран
$isSelected = true;
// Выходим из цикла так как понятно что жанр выбран
break;
}
}
}
// Флажок говорит что жанр НЕ выбран - нарисуем неотмеченный чекбокс
if (!$isSelected) {
echo '<input class="option-input checkbox" type="checkbox" name="genre[]" value="' . $genre['id'] . '">';
echo '<span class="text"> ' . $genre['genre'] . '</span>.';
}
echo '</div>';
}
Также данный код можно упростить и выводить чекбокс только в одном месте с учетом флажка $isSelected
.
Всё очень просто, у вас кривой алгоритм. Допустим ситуацию
1. У нас жанры: боевик, детектив. А у фильма жанр детектив, боевик.
2. Перебираем жанр => боевик. Фильм => детектив. Ставим не выбранный боевик
3. Перебираем жанр => боевик. Фильм => боевик. Ставим выбранный боевик
Второй цикл у вас должен только говорить выбрана позиция или нет (причём можно не перебирать дальше, если нашли совпадение). Первый цикл должен строить флажки
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо реализовать web приложение с голосованием используя springКандидаты загружаются в базу данных через специальную форму
Есть проект "написанный" в Buildbox и импортированный в Android StudioВ самой студии была создана Activity с кнопкой, при нажатии на которую открывается...