PHP - 如果一个值存在于对象数组中

Rez*_*ngi 5 php arrays object

我有一个名为 $filtes 的对象数组,如下所示:

Array
(
    [0] => stdClass Object
        (
            [title] => Type
            [alias] => type
            [id] => 14
            [parent_id] => 9
            [subs] => Array
                (
                    [0] => stdClass Object
                        (
                            [title] => car
                            [alias] => car
                            [id] => 15
                            [parent_id] => 14
                        )

                )

        )

    [1] => stdClass Object
        (
            [title] => Model
            [alias] => model
            [id] => 18
            [parent_id] => 9
            [subs] => Array
                (
                    [0] => stdClass Object
                        (
                            [title] => XF
                            [alias] => xf
                            [id] => 19
                            [parent_id] => 18
                        )

                    [1] => stdClass Object
                        (
                            [title] => XJ
                            [alias] => xj
                            [id] => 20
                            [parent_id] => 18
                        )

                    [2] => stdClass Object
                        (
                            [title] => XK
                            [alias] => xk
                            [id] => 21
                            [parent_id] => 18
                        )

                    [3] => stdClass Object
                        (
                            [title] => F-TYPE
                            [alias] => f-type
                            [id] => 22
                            [parent_id] => 18
                        )

                )

        )

    [2] => stdClass Object
        (
            [title] => Condition
            [alias] => condition
            [id] => 24
            [parent_id] => 9
            [subs] => Array
                (
                    [0] => stdClass Object
                        (
                            [title] => new
                            [alias] => new
                            [id] => 24
                            [parent_id] => 9
                        )

                )

        )

)
Run Code Online (Sandbox Code Playgroud)

检查 $filters[$i]->title 和 $filters[$i]->subs[$j]->title 中是否存在某个单词的最佳做法是什么。在此检查中,速度非常重要。

sro*_*oes 7

创建一个简单的递归函数:

function myArrayContainsWord(array $myArray, $word) {
    foreach ($myArray as $element) {
        if ($element->title == $word || 
            (!empty($myArray['subs']) && myArrayContainsWord($myArray['subs'], $word)) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样调用它:

if (myArrayContainsWord($filtes, $title)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)