1

我有一个 PHPArray :

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

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

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

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

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

我尝试了各种功能,例如array_searchand strstr,以及有关 stackoverflow 的其他一些问题,但它们大多仅限于单个键值搜索。

4

1 回答 1

2

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

$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 列)。您也可以在没有参数的情况下运行相同的算法,并且所有数据都应该出来。

于 2012-06-01T02:13:57.850 回答