为什么代码会进入无限循环?(

Ant*_*ton 2 php loops

<?php
$mines = 10;

####
for($x=1; $x<=9; $x++) {
    for($y=1; $y<=9; $y++) {
        $minefield[$x][$y] = 0;
    }
}       

for($i=0; $i<$mines; $i++) {
    $randx = rand(1, 9);
    $randy = rand(1, 9);

    if($minefield[$randx][$randy] == 'X') {
        $i--;
    } else {
        $minefield[$randx][$randy] = 'X';
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

net*_*der 8

当比较用整数字符串(或资源),字符串被转换为数字第一,按照文档,然后进行比较.

因此,这:

if ($minefield[$randx][$randy] == 'X')
Run Code Online (Sandbox Code Playgroud)

...... $minefield[$randx][$randy] = 0相当于:

if (0 == 0) // 0 == (int)'X'
Run Code Online (Sandbox Code Playgroud)

......这总是如此.因此,您在每次迭代时递增和递减$i.


小智 7

我会尝试设置$ minefield [$ x] [$ y] ='0'; 用引号,这两个类型都是字符串.可能是一个问题.

查看关于此主题的PHP手册将字符串与数字进行比较