Sah*_*hir 16 php arrays search product store
我正在用PHP做一个非常小的在线商店应用程序.所以我在PHP中有一组地图.我想在数组中搜索字符串(产品).我在PHP中查看了array_search,似乎只查找完全匹配.你们知道更好的方法来实现这个功能吗?因为这只是我实际做的一小部分,所以我希望有一些内置的东西.任何想法?
谢谢!
编辑:该数组包含以下格式的"产品":
[6] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 2000-YM
)
[Name] => Team Swim School T-Shirt
[size] => YM
[price] => 15
[group] => Team Clothing
[id] => 2000-YM
)
[7] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 3000-YS
)
[Name] => Youth Track Jacket
[size] => YS
[price] => 55
[group] => Team Clothing
[id] => 3000-YS
)
Run Code Online (Sandbox Code Playgroud)
所以我想知道我可以做一个搜索,比如"团队",这会让我看到第一个看到这里的项目.我的搜索基于名称(这只是一个小的东西).我知道我可以找到确切的字符串,如果它找不到确切的项目,我只是坚持"最佳结果".效率很好但不是必需的,因为我只有大约50项,所以即使我使用"慢"算法也不会花费太多时间.
Mar*_*c B 39
array_filter
允许您指定自定义函数进行搜索.在您的情况下,一个简单的函数strpos()
用于检查您的搜索字符串是否存在:
function my_search($haystack) {
$needle = 'value to search for';
return(strpos($haystack, $needle)); // or stripos() if you want case-insensitive searching.
}
$matches = array_filter($your_array, 'my_search');
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用匿名函数来帮助防止命名空间污染:
$matches = array_filter($your_array, function ($haystack) use ($needle) {
return(strpos($haystack, $needle));
});
Run Code Online (Sandbox Code Playgroud)
foreach($array as $item){
if(strpos($item,"mysearchword")!== false){
echo 'found';
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用preg_match进行更灵活的搜索而不是strpos.
归档时间: |
|
查看次数: |
33847 次 |
最近记录: |