如何使用stdClass在数组中搜索?

时间:2017-10-12 06:43:23

标签: php

我有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?

1 个答案:

答案 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";
}));