在多级数组中搜索字符串的部分

时间:2012-03-13 15:34:34

标签: php

是否有一个函数允许我在多维深度的多维数组中搜索?数组的一个例子可以在下面找到。

我想要的是能够在整个阵列中进行搜索,无论它有多深(尽管3级深度是实际限制)。搜索必须在数组元素内的所有字符串中完成,并且为了使它更复杂,它需要能够在数组中找到字符串的一部分(最好不区分大小写)。

我已经搜索了一个能够快速有效地处理这个问题的好类或函数,但到目前为止还没找到。

Array
(
    [0] => Array
        (
            [OrderReferenceNumber] => 201100196
            [OrderCustomerID] => 01239123
            [OrderCustomerName] => test
            [OrderHistoryItems] => Array
                (
                    [0] => Array
                        (
                            [OrderItem] => productID
                            [OrderItemGroup] => productName
                        )

                )

        )

非常感谢!

1 个答案:

答案 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