エラーのあるロジックを使用するフルテキスト検索コードがあります。そうでなければ、PHPが動作することを理解できません。まず、配列を返す* file_find *というかなり長い関数があります。前の関数が終了する前にPHPでコードが続きました
$allftsearch_results = array();
for ($i = 0; $i <= count($all_files); $i++) {
$current_file = $all_files[$i];
//Run one file
if (file_exists($current_file)) {
$search_result = file_find($current_file, $phpfilenames[$i], $num_ands, $keywords_core, $keywords_boolean, $phpfilenames, $ascii_limit);
//Add file results to allftsearch_results array
if (!empty($search_result)) {
foreach ($search_result as $keyfilename => $invpagevalue) {
array_push($allftsearch_results, $keyfilename);
}
}
}
}
それは* file_find *に送信されますように私は、$ current_fileをプリントアウトした場合、それはそれの順序を反映している:私はこのような各上file_find *、* all_files *と呼ばれるファイルの配列を私が実行してステップスルーすることを*持っていますAさん、Bさん、Cさんなどです。しかし、結果が返ってから$ keyfilenameを表示すると、実際に関数に送られたファイルの後ろに遅れてしまいます。
- 現在のファイル::burnham.html
- 現在のファイル:burroughs.html
- 現在のファイル:burton.html
- 現在のファイル:busch.html
- 私はこのようなもので終わります現在のファイル:busoni.html
- 現在のファイル:butler.html
- 返されたファイル:オルビー
- 現在のファイル:
- 返されたファイルbyron.html:場合 albeville など
それはすべて同じ内です
* file_find *が終了するまで、コードの進行を待つことができますか?
これはバックグラウンドで実行されている 'find_file'では問題ありません。 PHPはあなたの関数のいくつかを別のスレッドで誤って実行することはできません。たとえそれがあったとしても、結果を関数の最初の戻り値に遡ってマージすることはありません。あなたのアルゴリズムは何らかの形で壊れているので、サンプルコードからどうやって分かりにくいと思っています。 'file_find'とはどういう意味ですか? '$ all_files'を偶然修正しますか? – meagar
配列 '$ all_files'を生成するためにあなたは何を行い、' find_file() '関数のソースは何ですか? – KyleWpppd