några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

Loopar Felhantering

1.3 Kontrollsatser

Se även control-structures *

 

if

Nedan visas ett exempel på if-satsens användning.

<?php
    
# för exemplet skull så generarar jag ett slumptal 
    # med hjälp av Mersenne Twister algoritmen. 

    # initiera slumptalsgeneratorn
    
mt_srandtime() );
    
    
# slumplal mellan 0 och 20
    
$nummer mt_rand020 );

    
# visa numret
    
echo $nummer;

    if ( 
$nummer 10 # om mindre är 10
    
{
        echo 
" är mindre än 10";
    } 
    elseif ( 
$nummer 10 # om större än 10
    
{
        echo 
" är större än 10";
    } 
    else 
# exakt 10
    
{
        echo 
" är exakt 10!";
    }
?>
Listning 1.3.1 - samples/s8.php

19 är större än 10
Resultat av listning 1.3.1

Observera att det inte finns någon "End If", utan blocken markeras med hjälp av { och }.

OBS! Det vanligaste misstaget en användare gör är att han skriver = för jämförelser. Detta medför inte ett syntaxfel utan det sker en "vanlig" tilldelning. Se nedanstående exempel. Kan förorsaka otrevliga buggar i programmet.

<?php
    $nummer 
12345;
    if (
$nummer 10)
    {
        echo 
$nummer " är exakt 10!";
    }
    else 
    {
        echo 
$nummer " är inte 10!";
    }
?>
Listning 1.3.2 - samples/s9.php

10 är exakt 10!
Resultat av listning 1.3.2

? operatorn

En variant på if är C-språkets ?-operand. Den påminner lite om IF funktinonen i EXCEL.

Syntaxen är:
jämförelse ? det som skall returneras om sant : det som returneras om falskt

 

<?php
    
# slumplal mellan 0 och 20 
    
mt_srandtime() ); 
    
$nummer mt_rand020 ); 

    
# visa om det var större än 10 eller inte
    
echo $nummer;
    echo 
$nummer 10 " är större än 10" " är inte större än 10";

    echo 
"<br />";
    
    
# man kan även nästa ? . kombinatinen
    
echo $nummer;
    echo 
$nummer 10 " större" : ( $nummer 10 " mindre" " exakt" );
?>
Listning 1.3.3 - samples/s10.php

19 är större än 10
19 större
Resultat av listning 1.3.3

 

switch

<?php
    
# dagens nummer (mellan 0 och 6)
    
$dayNumber date("w");

    switch ( 
$dayNumber )
    {
        case 
0:
            
$dag "Söndag";
            break;
        case 
1:
            
$dag "Måndag";
            break;
        case 
2:
            
$dag "Tisdag";
            break;
        case 
3:
            
$dag "Onsdag";
            break;
        case 
4:
            
$dag "Torsdag";
            break;
        case 
5:
            
$dag "Fredag";
            break;
        case 
6:
            
$dag "Lördag";
            break;
        default;
            
$dag "En dag som inte finns?";
    }
    echo 
"I dag är det " $dag;

?>
Listning 1.3.4 - samples/s11.php

I dag är det Tisdag
Resultat av listning 1.3.4

Observera ordet break; som gör att switch satsen inte fortsätter med nästa rad. Om man inte har break; kommer man att "trilla igenom" och resultatet blir något konstigt. Se nedan:

<?php
    
# dagens nummer (mellan 0 och 6)
    
$dayNumber date("w");

    switch ( 
$dayNumber )
    {
        case 
0:
            
$dag "Söndag";
        case 
1:
            
$dag "Måndag";
        case 
2:
            
$dag "Tisdag";
        case 
3:
            
$dag "Onsdag";
        case 
4:
            
$dag "Torsdag";
        case 
5:
            
$dag "Fredag";
        case 
6:
            
$dag "Lördag";
        default;
            
$dag "En dag som inte finns?";
    }
    echo 
"I dag är det " $dag;

?>
Listning 1.3.5 - samples/s11wrong.php

I dag är det En dag som inte finns?
Resultat av listning 1.3.5

Eftersom man inte kan använda intervall som i VB kan det kanske vara bäst att strunta i switch och satsa på att behärska if-elseif-else syntaxen istället.

 

   Börja härKontrollsatser