在PHP数组中搜索

时间:2012-06-01 02:00:45

标签: php arrays search

我有一个PHPArray:

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

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

我需要搜索关于用户字段的数组字段。 因此,如果任何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的其他一些问题,但它们主要限于单个键值搜索。

1 个答案:

答案 0 :(得分:2)

我会逐行搜索数据数组,查找与传递的过滤器匹配的所有内容。将您的字段数组作为键=>值,其中key是列名称,值是所需值,

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