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
,这与和将它们一起传递是一样的。