在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列)来说,这应该是可行的。您也可以在没有参数的情况下运行相同的算法,所有数据都应该出来。效果很好!我添加了一些随机数据来增加大小,没有延迟。谢谢:)