php - 在具有相关性的数组中搜索

标签 php arrays search store product

我正在用 PHP 开发一个非常小的在线商店应用程序。所以我在 PHP 中有一组 map 。我想在数组中搜索一个字符串(一个产品)。我查看了 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
    )

所以我想知道我可以进行诸如“团队”之类的搜索,它会返回我在这里看到的第一个项目。我基于名称进行搜索(同样这只是一些小事)。我知道我可以找到确切的字符串,如果找不到确切的项目,我只是停留在“最佳结果”上。效率很好但不是必需的,因为我只有大约 50 个项目,所以即使我使用“慢”算法也不会花费太多时间。

最佳答案

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');

或者,您可以使用匿名函数来帮助防止命名空间污染:

$matches = array_filter($your_array, function ($haystack) use ($needle) {
    return(strpos($haystack, $needle));
});

关于php - 在具有相关性的数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5749415/

相关文章:

php - PHP 中使用端口号和根文件夹重写 URL

php - 如何从mysql数组文本中选择并比较

php - 防止 nicEdit 创建外部标签

c# - C#中字符串数组的自定义排序

C - 对数组描述进行排序

perl - 我如何在 Perl 5.8.8 中使用 'say'?

PHP JSON 编码方括号

c++ - C++ 中 typedef 结构的混淆

Java 泛型 - Class<?> 构造函数参数问题

apache - Solr不会配置