2016-05-02 1 views
1

Essayer de créer une fonction réutilisable pour recréer un tableau comme tel:Identification avant et après au point fixe (boucle)

$page_step_steps = array(
    array("id" => "1", "step" => "done-step"), 
    'main-active-step next-step-five', 
    array("id" => "2", "step" => "done-step"), 
    "main-active-step next-step-five", 
    array("id" => "3", "step" => "active-step"), 
    "main-next-step next-step-five", 
    array("id" => "4", "step" => "next-step"), 
    "main-next-step next-step-five", 
    array("id" => "5", "step" => "next-step") 
); 

Je suis actuellement coincé sur l'identification du tout CI-DESSUS l'étape active et CI-DESSOUS l'étape active, et leur donner l'ID étape correcte

-à-dire tout ce qui précède les active-step doit avoir un done-step affecté à la valeur step et le tableau en dessous devrait avoir main-active-step. Cependant, tout en dessous devrait avoir next-step et main-next-step.

lien Sandbox pour l'essayer:http://sandbox.onlinephpfunctions.com/code/c4b85c3d038560d8d3b4b5ad372f67a22df785c1

Voici la fonction jusqu'à présent:

function formatting_steps($step, $steps){ 
    $page_step_steps = array(); 
    $steps_t = array(1 => "one", 2 => "two", 3 => "three", 4 => "four", 5 => "five", 6 => "six"); 
    $steps_f = $steps_t[$steps]; 
    $final_steps = $steps * 2; 

    for($i = 1; $i < $final_steps; $i++){ 

    $r_step = round($i/2, 0, PHP_ROUND_HALF_UP); 

    if($i % 2){ 
     if($i == 1){ 
     $page_step_steps[$i]['id'] = $i; 

     if($i == $step){ 
      $page_step_steps[$i]['step'] = "active-step"; 
     } 
     else { 
      $page_step_steps[$i]['step'] = $i; 
     } 
     } 
     else { 
     $page_step_steps[$i]['id'] = $r_step; 

     if($r_step == $step){ 
      $page_step_steps[$i]['step'] = "active-step"; 
     } 
     else { 
      $page_step_steps[$i]['step'] = $i; 
     } 
     } 
    } 
    else { 
     $page_step_steps[] = 'next-step-' . $steps_f;  
    } 

    } 

    $page_step_steps = $page_step_steps; 

    return $page_step_steps; 
} 

sortie jusqu'à présent:

Array 
(
    [1] => Array 
     (
      [id] => 1 
      [step] => 1 
     ) 

    [2] => next-step-four 
    [3] => Array 
     (
      [id] => 2 
      [step] => 3 
     ) 

    [4] => next-step-four 
    [5] => Array 
     (
      [id] => 3 
      [step] => active-step 
     ) 

    [6] => next-step-four 
    [7] => Array 
     (
      [id] => 4 
      [step] => 7 
     ) 

) 

EDIT: En passant ce qui suit dans la fonction: formatting_steps(3, 4);

+0

ce qui est des paramètres pour la fonction 'formatting_steps'? veuillez préciser. –

+0

okey got it .......... –

+0

pouvez-vous s'il vous plaît expliquer ce que «3, 4» faire? –

Répondre

1

Il suffit de regarder votre fonction, vous avez une déclaration qui identifie l'état active.

Si vous vous concentrez sur la déclaration else, vous pouvez effectuer les opérations suivantes

if($step > $i){ 
    $page_step_steps[$i]['step'] = "done-step";    
} 
else{    
    $page_step_steps[$i]['step'] = "next-step"; 
} 

et

if($step > $r_step){ 
    $page_step_steps[$i]['step'] = "done-step";    
} 
else{ 
    $page_step_steps[$i]['step'] = "next-step"; 
}