Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在有限的可能性下构建PHP数组_Php_Html_Function - Fatal编程技术网

如何在有限的可能性下构建PHP数组

如何在有限的可能性下构建PHP数组,php,html,function,Php,Html,Function,我试图构建一段代码,将行打印5次,并且只有两种可能的结果。我还希望其中一个结果只能出现两次 <?php function abe( $number ) { $shoot = Array("alpha", "bravo"); ?> <h1> Hello <?php echo $number; ?> You are on team <?php echo $shoot[array_rand($shoot)]; ?>

我试图构建一段代码,将行打印5次,并且只有两种可能的结果。我还希望其中一个结果只能出现两次

  <?php
    function abe( $number ) {
    $shoot = Array("alpha", "bravo");

 ?>

        <h1> Hello <?php echo $number; ?> You are on team <?php echo $shoot[array_rand($shoot)]; ?> </h1>

        <?php
            }
        ?>

        <?php abe( '1'); ?>
        <?php abe( '2'); ?>
        <?php abe( '3'); ?>
        <?php abe( '4'); ?>
        <?php abe( '5'); ?>

有可能Bravo甚至不会打印一次。我如何确定它会打印两次?

未经测试,但这应该是动态的,可以处理任意数量的玩家:

<?php
function abe( $number ) {
    // Input: Array Input of numbers or Names
    // Output: Team selection for each member of array Alpha||Bravo, where there can only be 2 Bravo
    $b = 0;
    $r = "";
    foreach($number as $n){
        $p = rand(0,1);
        if($p == 1){
            $b++;
        }
        if($b > 2){ $p = 0; }
        $r .= "<h1 pick='$p'>Hello $n You are on team " . (!$p?"Alpha":"Bravo") . " </h1>\r\n";
    }
    return $r;
}

echo abe(array(1,2,3,4,5));
?>

然后您需要跟踪每个选项的使用次数,如果选择超出限制,则重新生成随机数。当然,您有5个输出,只有两个选项,因此第5次尝试将没有任何选择。我认为您将以数字>=5作为alpha结束,因为它没有重复约束。我还没有写代码,但是我很确定你最终会使用这样的数组:$shot=array(“alpha”=>array(“max”=>0,“current”=>0),“bravo”=>array(“max”=>0,“current”=>0));阿尔法可以打印3次,布拉沃可以打印2次。如果我有这个设置有10个输出-阿尔法将打印8次和布拉沃仍然2。如果这更清楚的话,我相信这是向前迈出的一步。尽管“Alpha”有可能会全部打印5次。我想知道如何强制它,使布拉沃必须打印两次。所以你想有2名成员随机被挑选为布拉沃每次?剩下的永远是阿尔法?是的,我一直在努力为自己弥补一个挑战,这是一个我无法理解的挑战。强制它有两个成员是“bravo”,其余的是alpha。我的编辑有帮助吗?如果它回答了问题,请标记它。这是一种工作,它有时会发出两次“好极了”,有时会发出一次。
<?php
function abe( $number ) {
    // Input: Array Input of numbers or Names
    // Output: Team selection for each member of array Alpha||Bravo, where there can only be 2 Bravo
    $b = 0;
    $r = "";
    foreach($number as $n){
        $p = rand(0,1);
        if($p == 1){
            $b++;
        }
        if($b > 2){ $p = 0; }
        $r .= "<h1 pick='$p'>Hello $n You are on team " . (!$p?"Alpha":"Bravo") . " </h1>\r\n";
    }
    return $r;
}

echo abe(array(1,2,3,4,5));
?>
<?php
function abe( $number ) {
    // Input: Array Input of numbers or Names
    // Output: Team selection for each member of array Alpha||Bravo, where there can only be 2 Bravo
    $b = 0;
    $c = count($number);
    $r1 = rand(1,$c);
    $r2 = rand(1,$c);
    if($r1 == $r2){
        $r2++;
        if($r2 > $c){
            $r2 -= 2;
        }
    }
    $r = "";
    foreach($number as $k => $n){
        if($k == $r1 || $k == $r2){
            $r .= "<h1 pick='$k'>Hello $n You are on team Bravo</h1>\r\n";
        } else {
            $r .= "<h1 pick='$k'>Hello $n You are on team Alpha</h1>\r\n";
        }
    }
    return $r;
}

echo abe(array(1,2,3,4,5));
?>