2017-02-23 4 views
0

else以外の文に該当する場合は、if/elseif/else文をループすることができます。完了するためにif/elseif/elseを繰り返します。

$namesは、ユーザーが選択する2つの名前の配列です。

現在のところ、コードは機能しますが、条件がelseifのいずれかに該当する場合、ループは停止します。ユーザーの観点からは、ほとんど何も起こっていないようです。

if($names[0] == $poster) { 
    shuffle($names); 
} elseif($names[1] == $entertainer) { 
    shuffle($names);   
} elseif($names[2] == $tunar) { 
    shuffle($names);   
} elseif($names[3] == $keeper) { 
    shuffle($names);   
} elseif($names[4] == $feeder) { 
    shuffle($names);  
} elseif($names[5] == $provider) { 
    shuffle($names); 
} else { 
    echo "This week's roles are:"; 

    while($row = mysqli_fetch_assoc($this_week_result)) { 
       $poster = $row['poster']; 
       $entertainer = $row['entertainer']; 
       $tunar = $row['tunar']; 
       $keeper = $row['keeper']; 
       $feeder = $row['feeder']; 
       $provider = $row['provider']; 
    } 

     echo $names[0] . " is the Poster <br>"; 
     echo $names[1] . " is the Entertainer <br>"; 
     echo $names[2] . " is the Tunar <br>"; 
     echo $names[3] . " is the Keeper <br>"; 
     echo $names[4] . " is the Feeder <br>"; 
     echo $names[5] . " is the Provider <br>"; 

     $sql = "INSERT INTO funroles 
     (poster,entertainer,tunar, keeper, feeder, provider, date) 
     VALUES ('$names[0]','$names[1]','$names[2]','$names[3]','$names[4]','$names[5]','$date')"; 

     $result = mysqli_query($conn, $sql); 
     mysqli_close($conn); 
} 
+0

代わりにswitch文を使用して再帰関数を作成できますか? – Dimi

+0

私は何も理解していませんでした、もっと詳しく教えてください –

+0

なぜこのタグは 'mysql'ですか? – shmosel

答えて

1

あなたは$namesの名前のどれもが、それは以前にいた同じ位置にあるなくなるまでシャッフルを維持したいように見えます。私が正しく理解していれば、if/elseif/else構造体なしで実行できます。

このような$namesのキーの位置と一致して、現在の名前の配列を作成します(それらのどれも行いませんまで、任意のキー/値のペアが一致するかどうかを確認するためにarray_intersect_assocを使用し、shuffleそして、それを

$current = [$poster, $entertainer, $tunar, $keeper, $feeder, $provider]; 

を空の配列を返します)。

while (array_intersect_assoc($current, $names)) { 
    shuffle($names); 
} 

はその後、その後、データベースにものを行います。

関連する問題