Ваш код немного сложен для чтения, но большой красный флажок, который я вижу, это блок:
//You have a single equals sign here v
if (($virginity == 0) && ($store = $current))
{
echo $defaultID;
}
Это означает, что до тех пор, пока $virginity==0
, эта строка будет всегда выполняться, а $store
всегда будет равняться $current
.
Кстати, я собираюсь порекомендовать некоторые предложения по переформатированию и удобочитаемости. Возьми их или оставь, но это только мое мнение.
$ current = $ result-> section;
if ($ current! = Null)
{// если один из результатов имеет квадратные скобки, поместите квадратные скобки в оба
echo $ result-> sectionid;
}
иначе если ($ virginity == true)
{// если это первая категория без идентификатора - инициализировать. это происходит один раз.
$ store = $ current;
$ virginity = false;
}
//you're setting $virginity=false or true, so doing !$virginity makes sense
// if it was actually a number, then comparing to 0 is better
// also, use parentheses only where really needed, otherwise it's just clutter
if (!$virginity && $store == $current)
{
echo $defaultID;
}
if (! $ Virginity && $ store! = $ Current)
{// если инициализированная и текущая строка категории отличается от сохраненной строки категории - установите новую категорию по умолчанию +1 и распечатайте ее
$ defaultID = $ defaultID ++;
echo $ defaultID;
$ store = $ current;
}