1

我有一部分 PHP 脚本对我来说很奇怪。下面的循环从数组中获取最大值builds——这是一堆随机顺序的整数。它按预期获得了最高值,那里没有问题。

$highest = $builds[0];
    for ($i=0; $i < count($builds); $i++) {
        if ($builds[$i] > $highest) {
            $highest = $builds[$i];
    }
}

问题是当我尝试$highest在循环之后使用时。(file_get_html是 simple_html_dom 库的一部分 - 我在脚本的其他部分使用它很好 - 这不是问题。)

$html = file_get_html("http://www.blah.com/builds/" . $highest);
//timeout msg on browser

这最终会超时。Chrome 返回“错误 101:连接已重置”。Firefox 以类似的方式返回,“在加载页面时重置了与服务器的连接。”

我玩了一点,我能说的最好的$highest就是没有以某种方式正确设置或调用。

如果我手动分配变量,则file_get_html可以正常工作并按预期返回数据。IE 如果我让我的脚本看起来像这样。

$highest = $builds[0];
    for ($i=0; $i < count($builds); $i++) {
        if ($builds[$i] > $highest) {
            $highest = $builds[$i];
    }
}

$highest = 20;  //I understand the loop is useless because of this
                //but I've been running it to make sure it's not the issue.

$html = file_get_html("http://www.blah.com/builds/" . $highest);
//now this returns data

为什么手动分配变量有效,但在循环中设置却无效?我一直在努力确保变量设置正确,而且看起来是这样printsvar_dumps脑子里糊涂了。

4

2 回答 2

1

由于 php max()函数可以采用数组,因此更简单的版本是

$highest=max($builds);
$html = file_get_html("http://www.blah.com/builds/" . $highest);
于 2013-02-05T00:36:03.583 回答
0

对此进行测试,一切似乎都有效。

$builds = array(10, 5, 6, 9, 22, 54, 33, 72, 9);
$highest = $builds[0];
for ($i=0; $i < count($builds); $i++) {
    if ($builds[$i] > $highest) {
    $highest = $builds[$i];
    }
}

echo $highest;

回显 $highest 输出 72,这是数组中的最高数字。$builds 是什么类型的数组,$builds 数组的 var_dump 是什么?

于 2013-02-05T00:11:33.437 回答