バグのあるPHPページを「継承」しました。私はこの言語の専門家ではありませんが、バグの原因を見つけたと思います。ループ内で、ページはフォーマットされた文字列をサーバーに送信します。HTMLページで見つけた文字列は次のようになります。
2011-09-19__full_1
したがって、3つの部分があるようです。
- 日付(0,10);
- 文字列(10,6);
- 最終的な数字(17,1);
この状況を処理するコードは次のとおりです。
$datagrid[] = array("date"=>substr($post_array_keys[$i], 0, 10),"post_mode"=>substr($post_array_keys[$i], 10, 6),"class_id"=>substr($post_array_keys[$i], 17, 1),"value"=>$_POST[$post_array_keys[$i]]);
何が起こるか:最終的な数字は複数の文字を含むことができるので、この部分は:
"class_id"=>substr($post_array_keys[$i], 17, 1)
17日から1文字しか取得していないように見えるため、正しくありません(これにより、Webサイトに奇妙な動作が発生するようです)。
文字列の最後の部分である整数なので、整数を取得するには、この行をこのように安全に変更できますか?
"class_id"=>substr($post_array_keys[$i], 17, strlen($post_array_keys[$i])-17);