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();
}
这项工作完美,输出这样的阵列(通过萤火虫):
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];
}
}
和输出这(通过萤火虫):
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;
}
所以,比较两个阵列,我没有发现任何差异,我失踪了什么?
就是这样,任何问题,做我的客人。
如果你echo /打印'strtolower($ key)'和'$ q',输出是什么? – swatkins
'echo strtolower($ key)'='dock.jpgforest flowers.jpgforest.jpgtree.jpg'和'$ q'它是我传递给自动完成像12345那样的自动完成例如 –
那么'strpos(strtolower( $ key),$ q)'试图在“dock.jpg”中找到“12345” - 这就是为什么它返回false。 – swatkins