У меня есть массив, который содержит категории для определенной статьи ($ link_cat). Затем я использую mysql_fetch_array для печати всех категорий, доступных в списке с флажками. Пока он делает это, я хочу, чтобы он сравнивал значение, на котором оно установлено, со значением из другого массива. Если есть совпадение, то это означает, что одна из категорий относится к этой статье, и она должна распечатать строку кода, чтобы применить проверенный атрибут. Великий! за исключением того, что не работает = [PHP вложенная петля, ведущая себя неожиданно
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)){
$cat[$i] = $row['category'];
$cat_id[$i] = $row['cat_id'];
echo '<li><input type="checkbox" ';
$catCount = count($link_cat);
for ($ct = 0; $ct < $catCount; $ct++){
if ($cat_id[$i] == $link_cat[$ct]){
echo 'checked="checked" ';
}
}
echo 'name="' . $cat_id[$i] . '" />' . $cat[$i] . '</li>';
$i++;
}
Я никогда действительно сделал вложенный цикл до (я подозреваю, что то будет проблема).
Проблема заключается в том, что при запуске $ link_cat [0], который будет иметь первую категорию для проверки в нем, не регистрируется. Он выглядит пустым. Распечатка переменных внутри цикла for подтвердила это. Любые другие [1] [2] и т. Д. В порядке. Это просто [0]. Но почему? это, кажется, не имеет никакого смысла. Я знаю, что там что-то есть, потому что я напечатал содержимое массива, когда я его заполнил, просто чтобы проверить. Тем не менее, он не просто отображается во время цикла. Есть идеи?
Можете ли вы показать код, который заполняет $ link_cat? – mbeckish
Согласен, что, скорее всего, будет проблема. –
Вы инициализировали $ i равным нулю перед входом в цикл while? –