0

配列から名前を付けるボックスが 200 個あります。すべての名前は順番に移動し、前の Box が配列から姓 (最大値?) を取得すると、配列の最初の値から再開します。

$BoxName = array (Name1, Name2, Name3, Name4, Name5);

最初のボックスの名前は、常にユーザーの入力によって決定されます。コーディングによる他のボックスの残りの部分。

今、私は非常に訓練されていないアプローチを使用しています: ユーザーの入力によって与えられた Box1 = Name3 の場合:

Box1 = Name3 //ユーザーが指定

$BoxName = array (Name1, Name2, Name3, Name4, Name5);

$a = 3; //This is given by the User
$b = $a + 1;

if ( $b <= 5 ) {
    $c = $a + 1;
} else {
    $c = 1;
}

$d = $c + 1;

if ( $d <= 5 ) {
    $e = $c + 1;
} else {
  $e = 1;
}
echo $Box1 = $BoxName [3]; // this is given by the user
echo $Box2 = $BoxName [$c];
echo $Box3 = $BoxName [$e];
// ... ... and the list goes on for another 197 boxes.

?>

明らかに乱雑で、正しくなく、汚れているように見えます。IT の訓練を受けていないダミーとして、これは私が達成できる最高のものです。

4

2 に答える 2

1

ここでモジュラス演算子 ( %) が役に立ちます。

$max_boxes = 200;
$start_box = 3; // box to start with from your example - this is 1-based offset value sent from user
$start_box_offset = $start_box - 1; // box_start position within zero-based array

$box_names = array ('Name1', 'Name2', 'Name3', 'Name4', 'Name5');
$box_name_count = count($box_names);
$box_output = array();

for ($i = 0; $i < $max_boxes; $i++) {
    $modulus = ($i + $start_box_offset) % $box_name_count;   
    $box_output[] = $box_names[$modulus];
}

$box1、などの代わりに配列として出力していることに注意してください$box2。操作がはるかに簡単になるためです。

于 2013-09-25T00:09:20.633 に答える
1
$BoxName = array ("Name1", "Name2", "Name3", "Name4", "Name5"); //This is configuration
$BoxCount=200; //This is configuration, as you want 3+197 boxes
$a = 3; //This is given by the User

$boxes=sizeof($BoxName);
for ($i=$1; $i<=$BoxCount; $i++)
  echo "Box $i = ".$BoxName[($a+$i-1) % $boxes];
于 2013-09-25T00:02:51.193 に答える