Kategorilere olmayan ID kategoriler PHP döngü

1 Cevap php

Benim proje üzerinde farklı içerik türleri çeşitli arama sonuçları oradayız. Önemsiz nedenlerden dolayı, tüm içerik türleri benzersiz bir kimlik taşırlar. Ancak, ben idless içerik türlerini algılar ve onlara benzersiz bir kimlik verecek bu döngü yazmak için çalıştı.

Temelde, sonuçlar şöyle:

  • Kategori Kimliği 3
  • Kategori Kimliği 3
  • Kategori Kimliği 4
  • NON-ID Kategori 1
  • NON-ID Kategori 2

[...]

Ben bu çalıştı:

$current = $result->section;						
// if there's a category ID -- use it
if ($current != null) echo $result->sectionid;
	else
	// if this is the first IDless category -- initialize. this happens once.
	if ($virginity == true) {
		$store = $current;
		$virginity = false;								
		}
// if initialized ve current category string is the same as stored category string -- print it
if (($virginity == 0) && ($store = $current)) {
	echo $defaultID;
	}
// if initialized ve current category string is different from the stored category string -- set new default category +1 ve print it
if (($virginity == false) && ($store != $current)) {
	$defaultID = $defaultID++;
	echo $defaultID;
	$store = $current;
	}

Can you see where I'm going here? Trying to give each new category that comes up in the search results a unique ID, on the next loop session - check if the category string is same as the previous one, if so -- use the same ID, else -- bump ID by 1, print the new ID ve store a new category.

Ancak: Bu düzgün çalışmıyor.

Neden?

1 Cevap

Sizin kod okumak için biraz zor, ama ben görmek büyük bir kırmızı bayrak bu blok:

//You have  a single equals sign here v
if (($virginity == 0) && ($store = $current)) 
{
    echo $defaultID;
}

Bu sürece $virginity==0, bu hat her zaman çalıştırmak gibi anlamına gelir, ve $store her zaman olacak eşit $current.

Bu arada, bazı biçimlendirme ve okunabilirlik önerileri tavsiye edeceğim. Onları almak ya da olsa, bu sadece benim düşüncem, onları bırakın.

$ Akım = $ result-> bölümünde;

if ($current != null) {//if one of the results has brackets, put brackets on both echo $result->sectionid; } else if ($virginity == true) {// if this is the first IDless category -- initialize. this happens once. $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) {// if initialized and current category string is different from the stored category string -- set new default category +1 and print it $defaultID = $defaultID++; echo $defaultID; $store = $current; }