我想根据一些搜索条件筛选出一个php数组,但它不是很有效。
我一直在尝试在谷歌上找到的这个代码,但是它出错了吗?
$shortWords = '/'.$_GET['sSearch'].'/i';
$rResult = array_filter($rResult,
function($x) use ($shortWords) {
return preg_match($shortWords,$x);
});
这是错误:
preg_match() expects parameter 2 to be string, array given
我不太清楚“函数($ x)使用....”正在做什么......我对php的限制。
这是“array_filter()”之前数组的样子:
array(
[0] =>
array(
['unit_nbr'] =>'BBC 2'
['p_unit_group_id'] =>NULL
['name'] =>1
['unit_id'] =>22640
['properties_id'] =>1450
)
[1] =>
array(
['unit_nbr'] =>'BBC 3'
['p_unit_group_id'] =>NULL
['name'] =>1
['unit_id'] =>22641
['properties_id'] =>1450
)
当我将搜索字符串传递给函数时,我想将unit_nbr“BBC 2”保留在数组中。我不知道我做错了什么。
感谢任何帮助。
提前致谢。
答案 0 :(得分:0)
尝试这样的事情:
foreach ($rResult as $okey => $oval) {
foreach ($oval as $ikey => $ival) {
if ($ival != $_GET['sSearch']) {
unset($rResult[$okey]);
}
}
}
如果这不是你想要的,那么我需要更多关于你想要达到的目标的信息。
答案 1 :(得分:0)
问题是多维数组。当您传递给回调时,$x
是数组:
array(
['unit_nbr'] =>'BBC 2'
['p_unit_group_id'] =>NULL
['name'] =>1
['unit_id'] =>22640
['properties_id'] =>1450
)
但您仍需要检查该数组中的项目。
$shortWords = '/'.$_GET['sSearch'].'/i';
$rResult = array_filter($rResult,
function($x) use ($shortWords) {
foreach ($x as $_x) {
if (preg_match($shortWords,$_x)) {
return true;
}
return false;
}
}
);