Problème avec switch en php

Fermé
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 - Modifié par playboy-1990 le 11/02/2011 à 22:56
 A.Nonymous - 12 févr. 2011 à 02:59
Bonjour,
Je voudrais savoir comment puis-je faire une condition avec switch et la fonction file_exits()
Voici mon exemple :
<?php 
define ('__MONFICHIER__', '/var/www/library/'); 
switch (??? je mets quoi ?) { 
  case file_exists( __MONFICHIER__ . $file_name): 
  include_once (__MONFICHIER__ . $file_name); 
  break; 
  case file_exists(__MONFICHIER__ . 'Smarty/' . $file_name): 
  include_once (__MONFICHIER__ . 'Smarty/' . $file_name); 
  break; 
  case file_exists(__MONFICHIER__ . 'lib/' . $file_name): 
  include_once __MONFICHIER__ . 'lib/' . $file_name; 
  break; 
        case file_exists(__MONFICHIER__ .'database/' . $file_name): 
  include_once (__MONFICHIER__ .'database/' . $file_name); 
  break; 
  default: 
  return false; 
 } 


Merci
A voir également:

3 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
11 févr. 2011 à 18:44
Salut.

Le switch sert à comparer la valeur de ce que tu mets entre parenthèse.

Pour plusieurs conditions, il faut faire plusieurs structure conditionnelles.
Donc plusieurs switch ou plusieurs if/else.

switch(file_exists('fichier1')) {
    case true:
        echo 'Ok';
    break;

    case false:
        echo 'Erreur';
    break;
}

if(file_exists('fichier2')) {
    echo 'Ok';
} else {
    echo 'Erreur';
}
0
switch(true)

Un tel "switch" s'arrêtera au 1er case dont la valeur équivaudrait "true" ( pas obligatoirement de même type ), où, si présent, exécuterait "default" si aucun "case" vrai

Ainsi :
case false:
case '':
case null:
// Pas exécuté
break;
case 1:
case 'A.nonymous':
// Exécuté
0
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 273
11 févr. 2011 à 22:53
Merci beaucoup pour vos aides
J'avais pu comprendre que le switch pouvais remplacer les conditions if, else
mais comme je vois il n'est pas toujours possible de faire la même chose avec switch
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
11 févr. 2011 à 23:18
Le switch est à utiliser lorsque tu compares plusieurs fois une même variable (ou une fonction) avec différente valeur. Par exemple :
if($var == 'Valeur 1') {

} elseif ($var == 'Valeur 2') {

} else {
    // Default du switch
}

Devient :
switch($var) {
    case 'Valeur 1':
        // ...
    break;

    case 'Valeur 2':
        //....
    break;

    default:
        // ...
     break;
}
0
La cas "switch(true)" est un usage particulier qui peut sans mal remplacer une structure if/elseif/else complexe.
L'usage du switch décrit par avion-f16 est effectivement l'usage conventionnel.
Le côté pratique du switch(true) comparé à une structure en "elseif" est qu'il est plus rapide de créer un nouveau cas, mais c'est un point de vue personnel ;)

L'usage d'un switch(true) dans le cas suivant ne serait cependant pas pertinent, même si possible :
switch(true)
{
case $var == 'Valeur 1':
// ...
break;
case $var == 'Valeur 2':
// ...
break;
default:
}
0