我有stdClasses的数组:
$a = new \stdClass();
$a->name = "aaa";
$a->type = "1";
$b = new \stdClass();
$b->name = "bbb";
$b->type = "2";
$c = new \stdClass();
$c->name = "ccc";
$c->type = "1";
$array = array($a, $b, $c);
$count = 0;
foreach ($array as $arr) {
if ($arr->type == 1) {
$count++;
}
}
计算值为1的类型比foreach更好的方法吗?我想要计算很多价值,所以foreach很不舒服。
也许是array_search或array_map?
答案 0 :(得分:3)
您可以使用 array_filter :
http://php.net/manual/tr/function.array-filter.php
示例:
$a = new \stdClass();
$a->name = "aaa";
$a->type = "1";
$b = new \stdClass();
$b->name = "bbb";
$b->type = "2";
$c = new \stdClass();
$c->name = "ccc";
$c->type = "1";
$array = array($a, $b, $c);
$count = count(array_filter($array, function($d){
return $d->type === "1";
}));