PHP - 计算对象数组中的类属性

时间:2012-07-18 00:26:07

标签: php arrays object foreach array-filter

我有这个函数,它遍历一个对象数组来搜索匹配的key =>价值对。如果没有更简单(或更优雅)的方式,我很好奇:

function count_class_attr($objects, $obj_key, $obj_val) {
 $count = 0;
 foreach ($objects as $object ) {
   foreach ($object as $key => $value) {
       if ($key == $obj_key && $value == $obj_val){
           $count ++;
       }
   }
 }
 return $count;
}

我认为下面的内容更接近我的目标。我循环遍历一个对象数组,而不是一个数组数组 - 下面的函数会尽可能高效吗?

function count_class_attr($objects, $obj_key, $obj_val) {
 $count = 0;
 foreach ($objects as $object ) {
    if (property_exists($object, $obj_key)) {
       if($object->$obj_key == $obj_val) { $count ++; }
    }
 }
 return $count;
}

2 个答案:

答案 0 :(得分:2)

不是遍历$ object数组,因为这是一个哈希,只需检查键/值是否存在/匹配就可以了,即:

if (array_key_exists($obj_key, $object)) {
    if ($object[$obj_key] == $obj_val) {
       $count++
    }
}

答案 1 :(得分:0)

if (in_array($obj_key, array_keys($objects, $obj_val))
   $count++;