【问题标题】:php foreach loop only outputs last array key valuephp foreach 循环只输出最后一个数组键值
【发布时间】:2012-02-10 20:35:41
【问题描述】:

我有一些代码可以生成 0-9 之间的 4 个唯一随机数:-

//Globals
$arr = array();
$gridMax = 9;
$i = 0;


while ( count($arr) < 4 ) {
$x = mt_rand(0, $gridMax);
    if ( !in_array($x, $arr) ) {
        $arr[] = $x;

        }
}

print_r($arr);

我正在尝试创建一个网格,如果相应的网格编号与我的数组中的 4 个唯一值之一相同,那么我希望它向 $build 变量添加一些文本。如果没有,什么也不做:-

while ($i <= $gridMax) {
foreach ($arr as $value) {
    if ($value == $i) { 
        $build = "build";
    } else {
        $build = "";
    }

}

echo "<li class=\"map\">{$build}</li>";
$i++;
}

但是,它仅适用于最后一个键中的最终值(此处显示):-

http://www.kryptonite-dove.com/sandbox/mt_rand/

谁能给我一些建议?我已经好几个月没写代码了,脑子里有点迷糊!

【问题讨论】:

    标签: php loops random foreach while-loop


    【解决方案1】:
    while ($i <= $gridMax) 
    {
        $build = '';
        if(in_array($i, $arr)) $build = 'build';
    
        echo "<li class=\"map\">{$build}</li>";
        $i++;
    }
    

    【讨论】:

    • 这似乎更快,更容易,更高效,因此已标记为答案。非常感谢大家。
    【解决方案2】:

    这个呢:

    while ($i <= $gridMax) 
    {
        $build = '';
    
        foreach ($arr as $value) 
        {
            if ($value == $i) 
            { 
                $build .= "build";
            }   
            else        
            {
                $build .= "";
            }
        }
    
        echo "<li class=\"map\">{$build}</li>";
        $i++;
    }
    

    【讨论】:

    • 它就像一个魅力谢谢!你能解释一下为什么它对我有用吗?
    • 我知道,我知道!假设 $i = 3,$arr = [1,2,3,4]。在 1 和 2 的原始代码中,它是错误的,对于 3,$build 更改为“build”,但对于 4,它再次更改为“”。在这里你追加到 $build 而不是设置它。
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多