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