Cours Système Web PHP Corrigé TD5
PHP, un langage de programmation
14 novembre 2005
1 Introduction 2 Bases
1. f u n c t i o n b i s s e x t i l e ( $a ) { i f ( $a%4==0) {
i f ( $a%100==0) { i f ( $a%400==0) return true ; elsereturn f a l s e ; } else
return true ; } else
return f a l s e ; }
2. f u n c t i o n f a c t o r i e l l e ( $n ) { $ r e s u l t =1;
for ( $ i =1; $i<=$n;++ $ i ) {
$ r e s u l t∗=$ i ; }return $ r e s u l t ; }
3. f u n c t i o n f a c t o r i e l l e ( $n ) { i f ( $n<=0)
return 1 ;
elsereturn $n∗f a c t o r i e l l e ( $n−1);
}
4. Il faut passer par une variable intermédiaire pour échanger.
Les arguments de la fonction étant passés par défaut par valeur, les changements ne sont pas répercutés sur les variables sur laquelle la fonction est appelée.
f u n c t i o n echange(&$a ,&$b ) { $temp=$b ;
$b=$a ;
$a=$temp ; }
1
3 Interpolation
1. $a =42;
echo "J ' a i $a ans " ; 2. echo "J ' a i " . $a . " ans " ;
Cette méthode est plus générale (on peut faire des calculs dans la concaténation), mais moins concise.
3. À l'intérieur de guillemets simples, aucune interpolation de variable n'est eectuée. De plus, les seuls caractères spéciaux à l'intérieur de guillemets simples sont \' et \\ (par exemple, \n n'est pas un caractère spécial à l'intérieur de guillemets simples).
4 Manipulation de chaînes de caractères
f u n c t i o n remplace ( $a , $b , $c ) {
$ p o s i t i o n=strpos ( $c , $a , 0 ) ;
while ( $ p o s i t i o n !==f a l s e ) { /∗ ( $ p o s i t i o n ) ou ( $ p o s i t i o n != f a l s e ) ne marcherait pas car s t r p o s peut renvoyer 0
comme i n d i c e v a l i d e ∗/
$c=substr ( $c , 0 , $ p o s i t i o n ) . $b . substr ( $c , $ p o s i t i o n+strlen ( $a ) ) ;
$ p o s i t i o n=strpos ( $c , $a , $ p o s i t i o n+strlen ( $b ) ) ; }return $c ;
}
5 Production de code HTML
f u n c t i o n t a b l e _ m u l t i p l i c a t i o n ( $n ) { echo "<table >" ;
echo "<caption>Table de m u l t i p l i c a t i o n de 1 Ã $n</caption>" ; echo "<tr>" ;
echo "<th></th>" ;
for ( $ i =1; $i<=$n ; $ i=$ i +1) { echo "<th>$i </th>" ; }echo "</tr>" ;
for ( $ i =1; $i<=$n ; $ i=$ i +1) { echo "<tr><th>$i </th>" ; for ( $ j =1; $j<=$n ; $ j=$ j +1) {
echo "<td>" . ( $ i∗$ j ) . "</td>" ; }echo "</tr>" ;
}echo "</table >" ; }
6 Tableaux
1. f u n c t i o n a f f i c h e _ t a b l e a u ( $assoc ) { echo "<table >" ;
echo "<tr><th>Clef </th><th>Valeur </th></tr>" ; foreach ( $assoc as $ c l e => $valeur ) {
echo "<tr><td>$cle </td><td>$valeur </td></tr>" ;
2
}echo "</table >" ; }
2. f u n c t i o n a f f i c h e _ t a b l e a u ( $assoc ) { echo "<table >" ;
echo "<tr><th>Clef </th><th>Valeur </th></tr>" ; foreach ( $assoc as $ c l e => $valeur ) {
i f ( is_array ( $valeur ) )
$valeur=implode ( " , " , $valeur ) ;
echo "<tr><td>$cle </td><td>$valeur </td></tr>" ; }echo "</table >" ;
}
3. Tri par insertion :
f u n c t i o n t r i _ i n s e r t i o n ( $tab ) { $N=count ( $tab ) ;
for ( $ i =0; $i<$N;++ $ i ) { for ( $ j =0; $j<$ i ;++$ j ) {
i f ( $newtab [ $ j ]>$tab [ $ i ] ) break ;
}
for ( $k=$ i ; $k>$ j;−−$k )
$newtab [ $k]=$newtab [ $k−1];
$newtab [ $ j ]= $tab [ $ i ] ; }
return $newtab ; }
3