0

AJAX を利用したスマート検索エンジンを構築しています。

私はキーワードを扱うので、バックエンド スクリプトで AJAX から提供された文字列を展開します。

(文字列は検索入力フィールドの値です)

$keywords = $_POST["keywords"];
$keywords = strtolower($keywords);
$keyword = explode(" ", $keywords);

ご覧のとおり、すべてのキーワードを含む $keyword という名前の配列があります。

ここで、無関係な結果になる配列から値を削除する必要があります。より明確にするには、値の長さが 3 未満のすべての行を削除したいと考えています。

私は多くの方法でそれを試しましたが、最後のものは単純な foreach ループでした:

foreach ($keyword as $key => $value) {
if ( strlen($key[ $value ]) < 3 ) {
    unset($keyword[$key]);
   }
}

私はarray_filterとこれらのような関数について読みましたが、つまり、なぜこのように機能しないのか想像できません。

何かアイデアがあれば、答えを書いてください! ご清聴ありがとうございました

4

3 に答える 3

1

配列の値は$valuenotになり$key[$value]ます。

試す

if ( strlen( $value ) < 3 ) {
于 2013-09-05T08:50:58.243 に答える
1

そのためにarray_filterを使用できます。

$keywords = array_filter($keywords, function($keyword) {
    return strlen($keyword) >= 3;
});

すべてのキーワードが 2 文字を超える配列を返します。テストしていませんが、アイデアはわかると思います。

もちろん、単純な foreach でそれを行いますが、array_filter はコードが少ないため、保守と読み取りが容易です。速度に関しては、大きな違いはないと思います。

于 2013-09-05T08:54:24.627 に答える