是否有一个函数允许我在多维深度的多维数组中搜索?数组的一个例子可以在下面找到。
我想要的是能够在整个阵列中进行搜索,无论它有多深(尽管3级深度是实际限制)。搜索必须在数组元素内的所有字符串中完成,并且为了使它更复杂,它需要能够在数组中找到字符串的一部分(最好不区分大小写)。
我已经搜索了一个能够快速有效地处理这个问题的好类或函数,但到目前为止还没找到。
Array
(
[0] => Array
(
[OrderReferenceNumber] => 201100196
[OrderCustomerID] => 01239123
[OrderCustomerName] => test
[OrderHistoryItems] => Array
(
[0] => Array
(
[OrderItem] => productID
[OrderItemGroup] => productName
)
)
)
非常感谢!
答案 0 :(得分:0)
这将搜索阵列所有级别上的所有元素,并且搜索区分大小写。只需将搜索词和数组传递给搜索。
class mySearcher
{
protected $search = '';
public function search($search, $arr)
{
$this->search = $search;
$this->searchArr($arr);
}
protected function searchArr($arr)
{
if(is_array($arr))
{
foreach($arr as $value)
{
if(is_array($value))
{
$this->searchArr($value); // this element is an array, so recursively search it
}
else
{
if(stripos($value, $this->search) !== false)
{
// found the search term, do something
echo 'found in: ' . $value . '<br />';
}
}
}
}
}
}
$obj = new mySearcher();
$obj->search('test', $arr); // search for 'test' in the array called $arr