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
$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 回答
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 回答