2009-10-11 5 views
0

Sur mon projet, il existe différents résultats de recherche de différents types de contenu. Pour des raisons sans importance, tous les types de contenu ne portent pas un identifiant unique. Cependant, j'ai essayé d'écrire cette boucle qui va détecter les types de contenu IDless, et leur donnera un identifiant unique.Catégorisation des catégories non-ID PHP loop

Fondamentalement, les résultats ressemblent à ceci:

  • Catégorie ID 3
  • Catégorie ID 3
  • Catégorie ID 4
  • Catégorie NON ID 1
  • Catégorie NON-ID 2

[...]

J'ai essayé ceci:

$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 and current category string is the same as stored category string -- print it 
if (($virginity == 0) && ($store = $current)) { 
    echo $defaultID; 
    } 
// if initialized and current category string is different from the stored category string -- set new default category +1 and print it 
if (($virginity == false) && ($store != $current)) { 
    $defaultID = $defaultID++; 
    echo $defaultID; 
    $store = $current; 
    } 

Voyez-vous où je vais ici? Essayer de donner à chaque nouvelle catégorie apparaissant dans les résultats de recherche un identifiant unique, sur la prochaine session en boucle - vérifier si la chaîne de catégorie est la même que la précédente, si c'est le cas - utiliser le même ID par 1, imprimez le nouvel identifiant et stockez une nouvelle catégorie.

Cependant: Cela ne fonctionne pas correctement.

Pourquoi?

Répondre

0

Votre code est un peu difficile à lire, mais un grand drapeau rouge que je vois est ce bloc:

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

Cela signifie que tant que $virginity==0, cette ligne sera toujours exécuté, et $store volonté toujours égal $current. En passant, je vais vous recommander quelques suggestions de reformatage et de lisibilité. Prenez-les ou laissez-les, cependant, c'est juste mon opinion.

$ current = $ result-> section; If ($ current! = Null) {// Si l'un des résultats comporte des parenthèses, placez les parenthèses sur les deux echo $ result-> sectionid; } else if ($ virginity == true) {// s'il s'agit de la première catégorie IDless - initialize. Cela arrive une fois. $ 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; 
} 

si {// si la chaîne de catégorie initialisé et le courant est différent de la chaîne de catégorie stockée (virginité $ & & magasin $ = courant de $!) - définir une nouvelle catégorie par défaut +1 et l'imprimer $ defaultID = $ defaultID ++; echo $ defaultID; $ store = $ current; }