0

解決できないエラーが発生しています。

エラーは次のとおりです。

Uninitialized string offset: 1

コードは次のとおりです。

if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){...}

$play_count_within_45_minutes[1]インデックスを0(のように)に変更すると、正常に動作するため、変数でエラーが発生しています$play_count_within_45_minutes[0]

次のコードを使用して、値がどうなるかを表示し、正常に出力しました。

print_r($play_count_within_45_minutes[1]);

出力は次のとおりです。

1.0E+80

元の変数宣言は次のとおりです。

$play_count_within_45_minutes = [0, 100000000000000000000000000000000000000000000000000000000000000000000000000000000];

1数値を変更しようとしたところ、同じエラーが発生したため、数値が大きすぎるとは思いません。

このループと関係があることがわかりました(print_r()テストしていたときにそこにあり、同じエラーが発生します):

for($i=0; $i <= (count($play_history_old_over_45_minutes_ago)-1); $i++ ){
    echo "<br>";
    print_r($play_count_within_45_minutes[1]);
    echo "<br>";
    if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){
        $play_count_within_45_minutes = $play_history_old_over_45_minutes_ago[$i][1];
    }
}
4

1 に答える 1

0

わかりました、私はそれを理解できなかった理由を見つけました。

PHP エラーについて私が知らなかったのは、元のifステートメントの後のすべてを同じ行として処理することです。そのため、エラーが 105 行目にあったにもかかわらず、104 行目にあることがわかりました。

$play_count_within_45_minutes[1]ただし、オリジナルを変更し$play_count_within_45_minutes[0]て問題が解決した理由はまだわかりません。とはいえ、それにはまだ問題があったでしょう。

固定コードは次のとおりです。

for($i=0; $i <= (count($play_history_old_over_45_minutes_ago)-1); $i++ ){
    echo "<br>";
    print_r($play_count_within_45_minutes[1]);
    echo "<br>";
    if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){
        $play_count_within_45_minutes[1] = $play_history_old_over_45_minutes_ago[$i][1];
    }
}

ifばかげたエラーのように思えますが、PHP がステートメントに続く行全体を同じ行として扱うことを本当に知りませんでした。

于 2013-07-10T20:35:48.750 に答える