我发现php中的对象数组中存在该值。
我不想遍历整个对象数组,他们在php中的任何替代对象就像is_array()一样吗?
编辑: 如果我var_dump($ te_ws)然后它显示此输出。 。
array(2) { [0]=> object(stdClass)#22 (3) { ["id"]=> string(2) "12" ["fk_webapp_id"]=> string(1) "3" ["fk_tenant_id"]=> string(2) "12" } [1]=> object(stdClass)#25 (3) { ["id"]=> string(2) "13" ["fk_webapp_id"]=> string(1) "5" ["fk_tenant_id"]=> string(2) "12" } }
$is_checked = FALSE;
if (!empty($te_ws)) {
foreach ($te_ws as t) {
if ($t->id === 4) {
$is_checked = TRUE;
}
}
}
是否可以使用php内置函数检查对象数组中的值4?
答案 0 :(得分:1)
您的对象数据是如何存储的?
如果是这样的话:
class Obj
{
public $key1 = "data";
public $key2 = "data";
public $key3 = "data";
public $key4 = "data";
}
然后,您可以调用isset($obj -> $key)
之类的内容,其中$obj
是您班级的实例,$key
是您希望查看的变量名称是否存在。
答案 1 :(得分:1)
你所要求的似乎很奇怪。您在做什么需要测试对象中值的成员资格?
在简单的情况下,您可以将对象强制转换为数组:
$object = new stdClass();
$object->a = 1;
in_array(1, (array) $object); // True
然而,这会破坏任何非平凡的对象:
class MyClass {
public $var1 = 1;
private $var2 = 2;
protected $var3 = 3;
}
$mc = new MyClass();
var_dump((array) $mc); // all properties, even private ones, are included
in_array(2, (array) $mc); // TRUE, even though you can't GET this value!
$mc->var2; // PHP DIES with FATAL ERROR!!!!
以下功能将更接近您描述的内容。但它找不到使用Magic Methods计算的属性。
function in_object($needle, $haystack, $strict=False) {
if (!is_object($haystack)) {
throw new InvalidArgumentException("\$haystack is not an object");
}
$reflector = new ReflectionObject($haystack);
$publicproperties = $reflector->getProperties(ReflectionProperty::IS_PUBLIC);
foreach ($publicproperties as $property) {
$value = $property->getValue($haystack);
if (($strict) ? $value===$needle : $value==$needle) {
return True;
}
}
return False;
}
答案 2 :(得分:0)
没有内置功能,但您可以实现类似:
class A {
public $a = 'value';
public $b = 'value2';
public function contains($value) {
return in_array($value, (array)$this);
}
}
$o = new A;
var_dump($o->contains('value2'));
var_dump($o->contains('value3'));
答案 3 :(得分:0)