Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如果对象数组中存在值_Php_Arrays_Object - Fatal编程技术网

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

PHP-如果对象数组中存在值,php,arrays,object,Php,Arrays,Object,我有一个名为$filtes的对象数组,如下所示: Array ( [0] => stdClass Object ( [title] => Type [alias] => type [id] => 14 [parent_id] => 9 [subs] => Array (

我有一个名为$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
                        )

                )

        )

)

检查单词是否存在于$filters[$i]->title和$filters[$i]->subs[$j]->title中的最佳实践是什么。速度在这种检查中非常重要。

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

function myArrayContainsWord(array $myArray, $word) {
    foreach ($myArray as $element) {
        if ($element->title == $word || 
            (!empty($myArray['subs']) && myArrayContainsWord($myArray['subs'], $word)) {
            return true;
        }
    }
    return false;
}
那么就这样称呼它:

if (myArrayContainsWord($filtes, $title)) {
    ...
}

存在PHP in_数组和/或PHP数组_key_。。。但是,您使用的是多维数组,因此我不确定您要搜索的范围有多广

 <?php
function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
       $current_key=$key;
       if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

我刚刚升级了@zander rootman的版本,添加了一个字段名选项

<?php
     function recursive_array_search($needle,$haystack, $field) {
          foreach($haystack as $key=>$value) {
                $current_key=$key;
                if($needle==$value->$field() OR (is_array($value->$field() ) && recursive_array_search($needle,$value->$field(),$field ) != false)) {
                      return true;
                }
          }
          return false;
      }

     // Example of use
     $result = recursive_array_search('2', $ressourceInfo->packs(), "idSubscription");
?>


请你看一下,我有点迷路了-谢谢如果你想找一个ID而不是标题,你只需将
$element->title
更改为
$element->ID