web-dev-qa-db-fra.com

plusieurs déclarations si

Est-ce que je peux utiliser plusieurs déclarations si comme suit ou existe-t-il une méthode plus efficace et plus performante?

while ( $actionType_query->have_posts() )
{
        $actionType_query->the_post();

        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_AGF', 'ecosystem_nbs')) {
          $cons_a++;
        }
        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_CMA', 'ecosystem_nbs')) {
          $cons_b++;
        }
        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_FOR', 'ecosystem_nbs')) {
          $cons_c++;
        }
        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_GRA', 'ecosystem_nbs')) {
          $cons_d++;

        }
        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_MON', 'ecosystem_nbs')) {
          $cons_e++;

        }
        if (has_term('NBS_CONS', 'broad_type_nbs' ) && has_term('NBS_RIV', 'ecosystem_nbs')) {
          $cons_f++;
        }

    }

Merci.

1
user142553

Chacune de vos instructions if a la même fonction has_term('NBS_CONS', 'broad_type_nbs' ). Cela pourrait être mis dans une variable pour la réutiliser à la place.

& Votre argument pour chaque instruction if est en réalité très cohérent. Vous pouvez donc probablement le réduire en plaçant simplement vos données variables dans un tableau, en boucle et en utilisant Variables de variable :

while ( $actionType_query->have_posts() ) {
    $actionType_query->the_post();
    $data = [
        'a' => 'AGF',
        'b' => 'CMA',
        'c' => 'FOR',
        'd' => 'GRA',
        'e' => 'MON',
        'f' => 'RIV',
    ];
    $broad_type_nbs = has_term('NBS_CONS', 'broad_type_nbs' );
    foreach ($data as $k => $v) {
        if ($broad_type_nbs && has_term('NBS_'.$v, 'ecosystem_nbs')) {
            ${'cons_'.$k}++;
        }
    }
}
2
David Sword