1

PHP スクリプトの一部の動作が異常です。以下のループは、builds配列から最大値を取得します。これは、ランダムな順序の整数の集まりです。予想どおり最高値を取得しており、問題はありません。

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

問題は$highest、ループの後に使用しようとするときです。( file_get_htmlsimple_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

変数を手動で割り当てると機能するのに、ループで設定しないのはなぜですか? prints変数が正しく設定されていることを確認するために、var_dumps途中で入力しましたが、正しく設定されているようです。頭がおかしくなった。

4

2 に答える 2

1

Since the php max() function can take an array, a simpler version is

$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 に答える