Ifology - come scrivere meglio questa affermazione? [chiuso]

4

Mi chiedo come scrivere l'istruzione if nel seguente blocco in un modo migliore. Dovrebbe funzionare quando $a è 14, 22, 30 e per tutti i seguenti valori ad intervalli di 8, fino ad un certo limite. Il modo attuale ovviamente non è positivo poiché l'azione deve essere eseguita ogni volta che viene soddisfatto lo schema periodico, e ciò richiederebbe molti, molti operatori OR.

if($a == 14 || $a == 22 || $a == 30 || $a == 38 || $a == 46... until some number){
    do something...
}
    
posta N Kristijan 24.09.2014 - 22:59
fonte

3 risposte

15
if($a % 8 == 6 && $a >= 14 && a <= some_number)

In generale, se vuoi la periodicità, pensa al modulo.

    
risposta data 24.09.2014 - 23:01
fonte
2

Se i tuoi valori di test non sono in una sequenza specifica (non sono potenze o due, non tutti pari, non tutti dispari, ecc.) puoi usare una tabella di ricerca per evitare le lunghe catene if :

int test_values[] = { 14, 22, 30, 38, 46, ... };

for (i = 0; i < test_values.length; i++)
{
    if (input == test_values[i])
    {
        do something...
    }
}

In questo modo è anche molto facile aggiungere più valori semplicemente espandendo l'array. La matrice di casi può anche essere inizializzata da un file di configurazione esterno.

    
risposta data 25.09.2014 - 04:21
fonte
1

In Python questo è abbastanza descrittivo:

if a in range(14, some_number, 8):
    do something
    
risposta data 25.09.2014 - 03:09
fonte

Leggi altre domande sui tag