【问题标题】:Searching in a PHP array在 PHP 数组中搜索
【发布时间】:2012-06-01 02:00:44
【问题描述】:

我有一个 PHPArray:

$fullData = array ( 
        array ( 'id' => 23123, 'name'=>'a', number =>...),
            array()....
);

这个完整的数据集显示给用户。 但是,如果他来自表单页面,我会发布数据来更改此数组。

我需要根据用户字段搜索数组字段。 因此,如果任何 POST 数据未填写,我将默认值设置为 all。

if( $resetData == 1) {
    foreach ($params as $i=>$k) {
        if($k!='all') {
            $fields[][$i] = $k;
        }
    }...

从而在fields 数组中获取用户填充的数据。 现在如何以 SQL AND 格式搜索用户填充的数据。 示例:name == 'aaditi' AND profile == 'student',将列出具有学生个人资料的名称为 aaditi 的所有数据

我尝试了array_searchstrstr等各种功能,以及stackoverflow上的一些其他问题,但它们大多仅限于单个键值搜索。

【问题讨论】:

    标签: php arrays search


    【解决方案1】:

    我会逐行搜索数据数组,找到所有与传递的过滤器匹配的东西。将您的字段数组作为键=>值,其中键是列名,值是想要的值,

    $outputArray = array();
    foreach($fullData as $row) {
        $addToOutput = true;
        foreach ($fields as $field) {
            foreach($field as $key => $value) {
                if (!isset($row[$key]) || $row[$key] != $value) {
                    $addToOutput = false;
                }
            }
        }
        if ($addToOutput == true) {
            $outputArray[] = $row;
        }
    }
    

    这不是最有效的解决方案,我相信可以找到更好的解决方案,但至少对于不是非常庞大的数据集(>100,000 行,每行 10 列),这应该可以正常工作。你也可以在没有参数的情况下运行同样的算法,所有数据都应该出来。

    【讨论】:

    • 效果很好!我添加了一些随机数据来增加大小,没有延迟。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多