我在PHP 7中有以下对象:
if(mBackground!=null)
mBackground.registerSensorManager();
在该对象的任何键中检查// Unregister SensorManager when exiting
mBackground.unregisterSensorManager();
是(int) 0 => object() {
'master' => null
},
(int) 1 => object() {
'master' => true
},
(int) 2 => object() {
'master' => null
},
的最有效方法是什么?
我可以遍历对象,然后设置一个变量,例如
master
但这似乎效率低下。
对象本身在每个节点中都有其他数据,这是一个简化的例子。
我尝试编写的内容,尽可能少的几行,此对象的任何部分都有true
?或者,反过来查看它,是我的$master = 0;
foreach ($obj as $key => $value) {
if ($value->master) {
$master++;
}
}
if ($master !== 0) {
}
节点在此对象上设置为master == true
吗?返回true或false可能足以作为输出,尽管计数也可以。< / p>
答案 0 :(得分:2)
假设您不想循环遍历数组,以及&#34; master&#34;的关键字。数组总是&#34; master&#34;,然后这个单行应该这样做:
$masterCount = count(array_filter(array_column($masterArray,'master')));
array_column用于获取&#34; master&#34;的所有值。没有闭包的列array_filter将自动过滤掉空值(false,null,0),新数组的count将获得真值的数量。
答案 1 :(得分:0)
if ($value->master && $value->master !== null) {
$master++;
}
答案 2 :(得分:0)
使用三等号
if ($value->master === TRUE) {
// your code here
}