我有一个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
为什么手动分配变量有效,但在循环中设置它不是吗?
我一路上放了prints
和var_dumps
以确保变量设置正确,而且似乎是。心中难以置信。
答案 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是什么?