2016-08-01 1 views
2

Je sortie de l'API:problème de commutateur PHP

<?php foreach ($soccerseason->getFixturesByMatchday(1) as $fixture) { ?> 
       <tr> 
        <td><?php echo $fixture->homeTeamName; ?></td> 
        <td>-</td> 
        <td><?php echo $fixture->awayTeamName; ?></td> 
        <td><?php echo $fixture->result->goalsHomeTeam; ?></td> 
        <td>:</td> 
        <td><?php echo $fixture->result->goalsAwayTeam; ?></td> 
       </tr> 
<?php } ?> 

cela fonctionne bien, il émet des noms comme: Walsall FC:

<td><?php echo $fixture->homeTeamName; ?></td> 

Maintenant, je veux la sortie à traduire au langage FR comme « rouge équipe » au lieu de « Walsall FC »

J'essaie ce PHP Switch dans l'en-tête de la page php, mais je reçois écran vide:

switch ($teamName) { 
    case $fixture->homeTeamName['Walsall FC']: 
     echo "équipe rouge"; 
     break; 
} 

votre aide est appréciée.

+1

Vous avez vous écrire la sortie de "API". Quelle API? Aussi, avez-vous pris votre deuxième extrait d'un plus gros morceau de code? Si oui, pourriez-vous partager ce plus gros morceau de code? – Julian

+0

API externe avec json_decode, le deuxième extrait est juste un test! – Isabella

+1

L'extrait 1 et l'extrait 2 sont-ils dans le même fichier PHP? Si oui, pourriez-vous montrer l'ensemble du fichier PHP? Sinon, pourriez-vous montrer * les deux * fichiers PHP (au moins les parties pertinentes)? – Julian

Répondre

5

Vous devez mettre la variable entre les parenthèses et la valeur après case:

switch ($fixture->homeTeamName) { 
    case 'redBlackpool FC': 
     echo "équipe rouge"; 
     break; 
} 

Mais peut-être vous mettre trop logique dans le modèle? Peut-être que vous pourriez faire:

switch ($fixture->homeTeamName) { 
    case 'redBlackpool FC': 
     $translatedHomeTeamName = "équipe rouge"; 
     break; 
} 

puis dans le modèle:

<td><?php echo $translatedHomeTeamName; ?></td> 

Si vous ne pouvez pas modifier le contenu du <td>, alors vous pourriez faire:

switch ($fixture->homeTeamName) { 
    case 'redBlackpool FC': 
     $fixture->homeTeamName = "équipe rouge"; 
     break; 
} 

ce qui précède devrait être exécuté avant que le <td> ne soit imprimé ... Fondamentalement, je suggère simplement que vous ne mettez pas toute l'instruction de commutateur à l'intérieur du <td> afin que vous puissiez garder yo ur le code bien rangé ...

Edition - basée sur la question

édité Puisque vous êtes dans une boucle foreach, alors vous devez traduire le terme à l'intérieur du foreach, comme ceci:

<?php foreach ($soccerseason->getFixturesByMatchday(1) as $fixture) { 

     switch ($fixture->homeTeamName) { 
      case 'redBlackpool FC': 
       $fixture->homeTeamName = "équipe rouge"; 
       break; 
      case 'blueBlackpool FC': 
       $fixture->homeTeamName = "équipe bleu"; 
       break; 
      default: 
      // here you can do something in case the team isn't any of the above. 
     } 
?> 
      <tr> 
       <td><?php echo $fixture->homeTeamName; ?></td> 
       <td>-</td> 
       <td><?php echo $fixture->awayTeamName; ?></td> 
       <td><?php echo $fixture->result->goalsHomeTeam; ?></td> 
       <td>:</td> 
       <td><?php echo $fixture->result->goalsAwayTeam; ?></td> 
      </tr> 
<?php } ?> 

Mise à jour - exemple avec fonction La fonction (vous pouvez le placer dans un fichier séparé et l'inclure dans le script principal):

function translateTeam($homeTeamName) 
    switch ($homeTeamName) { 
     case 'redBlackpool FC': 
      $homeTeamName = "équipe rouge"; 
      break; 
     case 'blueBlackpool FC': 
      $homeTeamName = "équipe bleu"; 
      break; 
     default: 
     // here you can do something in case the team isn't any of the above. 
    } 

    return $homeTeamName; 
} 

La boucle foreach:

// Include the php script that contains translateTeam() here... 

<?php foreach ($soccerseason->getFixturesByMatchday(1) as $fixture) { ?> 
      <tr> 
       // In the line below we call the function and pass the English name to it... 
       <td><?php echo translateTeam($fixture->homeTeamName); ?></td> 
       <td>-</td> 
       <td><?php echo $fixture->awayTeamName; ?></td> 
       <td><?php echo $fixture->result->goalsHomeTeam; ?></td> 
       <td>:</td> 
       <td><?php echo $fixture->result->goalsAwayTeam; ?></td> 
      </tr> 
<?php } ?> 
+0

qu'en est-il de la sortie ' homeTeamName; ?> ' – Isabella

+0

Voir la réponse modifiée (dernier paragraphe) – mastazi

+0

Première réponse a bien fonctionné monopostes:' interrupteur (fixture- $> homeTeamName) { case 'redBlackpool FC': echo "rouge équipe"; pause; } $ fixture-> homeTeamName = "redBlackpool FC"; 'mais pas de changements dans TD avec translatedHomeTeamName de deuxième réponse – Isabella