【发布时间】:2014-06-21 23:52:11
【问题描述】:
我有这个多维数组。我需要搜索它并只返回匹配和部分匹配的值。结果数组应与原始数组维度或结构相同。 我需要这样的功能:
function search_array($array,'kumar') { ....... }
我的数组是
$array = array(
0 => array(
2 => 'ram kumar',
1 => 'alagu jubi',
0 => 'kumar',
),
1 => array(
3 => 'senthil pandian',
2 => 'jubi alagu',
1 => 'manikandan',
0 => array(
2 => 'jancy',
1 => 'guru',
0 => 'rajesh kumar'
)
),
2 => array(
2 => 'pandi',
1 => 'selva',
0 => 'ajith'
)
);
预期结果:
array
(
[0] => array
(
[2] => ram kumar
[0] => kumar
)
[1] => array
(
[0] => array
(
[0] => rajesh kumar
)
)
)
我试试这个
function search_array($array, $val){
$ArrIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($ArrIterator as $id => $sub){
$childArray = $ArrIterator->getSubIterator();
if(strstr(strtolower($sub), strtolower($val))){
$childArray = iterator_to_array($childArray);
$result[] = $childArray;
}
}
return $result;
}
$resultsMul = search_array($array, 'kumar');
它的回报是这样的。
Array
(
[0] => Array
(
[2] => ram kumar
[1] => alagu jubi
[0] => kumar
)
[1] => Array
(
[2] => jancy
[1] => guru
[0] => rajesh kumar
)
)
但我只需要原始数组维度的匹配值和部分匹配值。
处理此问题的有效/最佳方法是什么?我的数组有近 200 000 条记录(可能会增加),这个数组对我的网站来说是全局的(就像数据库一样)。
【问题讨论】:
标签: php recursion search multidimensional-array