2011-07-27 4 views
-1

Comment le code ci-dessous (qui est dans une boucle foreach) retournent parfois quelque chose et revenir parfois rien quand il est passé les mêmes variables:php opérateurs logiques

$term_id = 76; 
$term_parent = 75; 

if($term_id != 114 && $term_id != 115 && $term_parent != 83){ 
    $term_link_content = 'something'; 
} else { 
    $term_link_content = 'nothing'; 
} 

- Sur la base des réponses à ce jour, le code complet est inférieure à. Je suis fondamentalement après le premier terme qui n'est pas égal à l'un des identifiants énumérés. Et j'ai vérifié la boucle en produisant $ term_id et $ term_parent pour différents messages qui ont les mêmes termes, donc je peux voir que l'instruction if est passée les mêmes valeurs mais parfois la variable $ term_link_content a du contenu et d'autres fois elle est vide .

$posts = get_posts('post_type=products&product_categories=Best Sellers'); 
foreach($posts as $post){ 

$post_ID = $post->ID; 

$terms = get_the_terms($post_ID, "product_categories"); 

$i = 0; 
foreach($terms as $term){ 

    $term_id = $term->term_id; 
    $term_parent = $term->parent; 
    $term_name = $term->name; 
    $term_slug = $term->slug; 

    if($term_id != 114 && $term_id != 115 && $term_parent != 83){ 

    // only get the first 
    if(++$i > 1) break; 
    $term_text = $term_name; 
    $term_link = $url.'/shop/'.$term_slug; 
    $term_link_content = '<span class="term_text"><a class="'.$card_colour.'" href="'.$term_link.'">'.$term_text.'</a></span>'; 

    } else { $term_link_content = ''; } 
} 
} 
+10

Ce ne sera pas. Aussi simple que cela. Quelque chose en dehors de ce code se passe. – Wrikken

+1

Ce que vous montrez ci-dessus ne produira jamais des résultats variables. Le problème doit être ailleurs –

+1

Il devrait toujours retourner quelque chose en fonction de ce que vous avez écrit. Sinon, quelque chose d'autre se passe. Post plus de code? –

Répondre

0

Je suppose que vous définissez $term_id et/ou $term_parent avant d'entrer dans la boucle foreach et effectuer le reste du code dans le corps de la boucle.

Cependant, quand vous faites quelque chose comme ceci:

foreach (getTerms() as $term) { 
    // perform an if-statement 
} 

Cela pourrait changer les variables que vous avez définies, par exemple .:

function getTerms() { 
    global $term_id, $term_parent; 
    // probably some database-connection that changes $term_id and $term_parent. 
} 

-moi si je me trompe, mais je suis Bien sûr, les fonctions de Wordpress fonctionnent de cette façon, donc vous ne devriez pas faire confiance aux variables globales génériques lorsque vous utilisez Wordpress, lorsque vous développez des plugins ou lorsque vous utilisez un framework orienté fonctionnel (au lieu d'un objet).

Questions connexes