我有一个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_search
和strstr
,以及有关stackoverflow的其他一些问题,但它们主要限于单个键值搜索。
答案 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列)。您也可以在没有参数的情况下运行相同的算法,并且所有数据都应该出来。