2010-10-07 25 views
0

Fondamentalement, je veux réaliser une telle fonctionnalité que 5-10 fonctions sont exécutées dans une rangée (comme normalement). Cependant, je veux que le script recule de plusieurs pas (ex: de la 5ème à la 3ème) et continue (comme 4,5,6,7,8,9,10) si un retour spécifique est reçu. Exemple:Mise en boucle de plusieurs fonctions dans PHP

<? 
function_1st(); 
function_2nd(); 
function_3rd(); 
function_4th(); 
$a = function_5th(); 
if($a == '3') //continue from 3rd further; 
function_6th(); 
function_7th(); 
?> 

Comme dans ce cas, il devrait être 1,2,3,4,5,3,4,5,6,7,8,9,10. Serait-il préférable d'utiliser la programmation orientée objet (classe) dans ce domaine?

Fondamentalement, je besoin que de conseils, comment faire comme ça dans une bonne façon :)

Cordialement, Jonas

Répondre

1

envelopper toutes les fonctions dans un quelque chose comme interrupteur:

function run($n) { 
    switch($n) { 
     case 1: $a = func1(); break; 
     case 2: $a = func2(); break; 
     case 3: $a = func3(); break; 
     case 4: $a = func4(); break; 
     case 5: $a = func5(); break; 
     case 6: $a = func6(); break; 
     case 7: $a = func7(); break; 
     case 8: $a = func8(); break; 
     case 9: $a = func9(); break; 
     default: return $a; 
    } 
    run($a ? $a : $n+1); 
} 
+1

vous auriez besoin d'ajouter une valeur par défaut pour éviter une boucle infinie: 'défaut: return $ a;' – ircmaxell

+0

ouais - juste donner l'idée, mais ... .. i Shoulda QA-ed avant posté! .. Merci! –

0

Vous pouvez baser la fonction appelle le retour de la fonction précédente

Exemple :

function one() { 
    if()... 
     return 'run function two'; 
    else 
     return 'run function four'; 
} 
0
 
$step=1; 
while($step < 99){ 
switch ($step){ 
    case 1: 
     $step=function_1(); 
     break; 
    case 2: 
     $step=function_2(); 
     break; 
    case 3: 
     $step=function_3(); 
     break; 
    ... 
    case 9: 
     $step=function_9(); 
     break; 
    default: 
     $step=99; 
     } 
    } 
0

utilisation "fonctions variables" ou "fonction call_user_func()". Je n'ai pas le temps de l'expliquer, s'il vous plaît google que les mots-clés.

0

Pourquoi auriez-vous besoin de faire cela? Êtes-vous en train de dire que les résultats sur $ a seront différents si function_3() y est appelé après que function_5() a été appelée dessus et ensuite il passera la vérification sur function_5()?

Vous devrez peut-être repenser votre logique en général. À propos, n'utilisez pas de petites étiquettes. Écrivez

<?php