Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP数组中搜索_Php_Arrays_Search - Fatal编程技术网

在PHP数组中搜索

在PHP数组中搜索,php,arrays,search,Php,Arrays,Search,我有一张照片: $fullData = array ( array ( 'id' => 23123, 'name'=>'a', number =>...), array().... ); 此完整数据集将显示给用户。 但是,如果他来自表单页面,我会发布数据来更改此数组 我需要搜索数组字段,相对于用户字段。 因此,如果没有填写任何POST数据,我将默认值设置为all if( $resetData == 1) { foreach (

我有一张照片:

$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;
        }
    }...
从而在
字段
数组中获取用户填充的数据。 现在,我如何搜索用户填写的数据,以SQL和SQL格式。 示例:name='aaditi'profile=='student',将列出具有学生档案的名称aaditi的所有数据


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

我会逐行搜索数据数组,找到所有与通过的过滤器匹配的内容。将字段数组设为key=>值,其中key是列名,value是所需值

$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;
    }
}

这不是最有效的解决方案,我相信可以找到更好的解决方案,但至少对于不太庞大的数据集(大于100000行,每个行有10列)来说,这应该是可行的。您也可以在没有参数的情况下运行相同的算法,所有数据都应该出来。

效果很好!我添加了一些随机数据来增加大小,没有延迟。谢谢:)