0

オートコンプリートを使用していくつかのファイルを検索しようとしていますが、機能せず、理由がわかりません。

データベースの結果を処理する単純なオートコンプリートの例を作成します。

$items = array();
while(!$res->EOF){

    $descPi  = "PI: ".$res->fields["FIELD1"];
    $descEmb = " - EMB: ".$res->fields["FIELD2"]."/".$res->fields["FIELD3"]."/".$res->fields['FIELDS4'];
    $origem  = " - ORI: ".$res->fields['FIELD5'];
    $fornec  = " - FOR: ".$res->fields['FIELD6'];   

    $items[$descPi.$descEmb.$origem.$fornec]  = $res->fields["FIELD1"];
    $res->MoveNext();
}

これは完璧に機能し、次のような配列を出力します(firebugによる):

Array
  (
    [PI: 3221554 - EMB: 30/6/2012 - ORI: TAIWAN - FOR: SIRUBA] => 3221554
   )
[ { "id": "3221554", "label": "PI: 3221554 - EMB: 30/6/2012 - ORI: TAIWAN - FOR: SIRUBA", "value": "PI: 3221554 - EMB: 30/6/2012 - ORI: TAIWAN - FOR: SIRUBA" } ]

完全。


そして今、私はほとんど同じですが、ファイルを検索していますが、機能していません

$items = array();
for($j=0;$j<count($files);$j++)
{
    if($files[$j] != "." and $files[$j] != ".."){
        $items[$files[$j]]  = $files[$j];
    }
}

そしてこれを(firebugによって)出力します:

Array
 (
   [Dock.jpg] => Dock.jpg
   [Forest Flowers.jpg] => Forest Flowers.jpg
   [Forest.jpg] => Forest.jpg
   [Tree.jpg] => Tree.jpg
 )
 [  ] // return's empty

コードをデバッグしているstrposと、この検証が見つかりました。彼は、私の配列が戻ってきて、 :falseを作成するために入力していないと言っています。array_push

$result = array();
foreach ($items as $key=>$value) {
if (strpos(strtolower($key), $q) !== false) {
    array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
}
if (count($result) > 11)
    break;
}

したがって、2つの配列を比較すると、違いは見つかりませんでした。何が欠けていますか?

それだけです、質問は、私のゲストになります。

4

1 に答える 1

1

上記のコメントによると、strpos(strtolower($key), $q)クエリが配列インデックスと一致していません。インデックスはファイル名であるため、一致させるには、の値としてファイル名を渡す必要があります$q

于 2012-06-22T13:28:56.900 に答える