PHP变量未正确设置/声明/调用?

时间:2013-02-04 23:55:50

标签: php variables

我有一个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正常工作并按预期返回数据。 I.E.如果我让我的脚本看起来像这样。

$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以确保变量设置正确,而且似乎是。心中难以置信。

2 个答案:

答案 0 :(得分:1)

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

$highest=max($builds);
$html = file_get_html("http://www.blah.com/builds/" . $highest);

答案 1 :(得分: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;

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