Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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_Drupal_Search_Object - Fatal编程技术网

Php 如何搜索对象以查看它们是否包含特定值?

Php 如何搜索对象以查看它们是否包含特定值?,php,drupal,search,object,Php,Drupal,Search,Object,我有各种各样的对象,看起来像这样: Array ( [0] => stdClass Object ( [tid] => 18 [vid] => 1 [name] => test [description] => [format] => [weight] => 0 [depth] => 0 [parents] =

我有各种各样的对象,看起来像这样:

Array
(
[0] => stdClass Object
    (
        [tid] => 18
        [vid] => 1
        [name] => test
        [description] => 
        [format] => 
        [weight] => 0
        [depth] => 0
        [parents] => Array
            (
                [0] => 0
            )

    )

[1] => stdClass Object
    (
        [tid] => 21
        [vid] => 1
        [name] => tag
        [description] => 
        [format] => 
        [weight] => 0
        [depth] => 0
        [parents] => Array
            (
                [0] => 0
            )

    )
)

基本上,我需要了解这些对象中是否存在[name]值,如何执行此操作?

要检查对象中是否存在
name
属性:

if(isset($obj->name)) {
    // It exists!
}
因此,如果要查找具有
$name
属性的对象:

$result = array_filter($myArray, function($x) {
    return isset($x->name);
}); // Assuming PHP 5.3 or higher

开发人员最重要的技能之一就是能够使用谷歌。你说的谷歌存在是什么意思?是否只需要定义它?它必须有一个值吗?不是空的?基本上是财产的价值。例如,如果[name]包含“test”,则执行特定操作。您只需要知道是否有任何对象的名称为“test”,或者您需要找到一个且唯一一个名称为“test”的对象,或者您需要找到所有名称为“test”的对象?你可以建立一个包含所有名称的字典,或者一个从名称到对象或对象列表的映射,如果它们不是唯一的。谢谢。但这是我需要的实际价值。我尝试过各种方法,比如计算数组项,然后使用for循环检查每个对象的每个name属性是否等于我的值。我认为这在目前起作用,但如果有很多对象,这会变得很慢吗?@Robert:这取决于你有多少对象,但实际上没有更快的方法来搜索未排序的列表。是否可以一次检查多个属性,而不是使用isset()对于每个属性?@dskanth:您可以将多个变量传递给
isset
,这与
将它们一起传递是一样的。