如何通过houseid对此数组进行分组?
Array
(
[0] => stdClass Object
(
[id] => 1111
[houseid] => 58
[price] => 2995
)
[1] => stdClass Object
(
[id] => 1112
[houseid] => 58
[price] => 4050
)
[2] => stdClass Object
(
[id] => 1114
[houseid] => 60
[price] => 1695
)
[3] => stdClass Object
(
[id] => 1115
[houseid] => 60
[price] => 2250
)
[4] => stdClass Object
(
[id] => 1116
[houseid] => 60
[price] => 2295
)
)
我需要计算一个houseid的总价格并做一些数学/条件,如果这个阵列组很容易...
我可以将此数组格式化为
Array
(
[58] => stdClass Object(
[0] => stdClass Object
(
[id] => 1111
[price] => 2995
)
[1] => stdClass Object
(
[id] => 1112
[houseid] => 58
[price] => 4050
)
)
[60] => stdClass Object(
[0] => stdClass Object(
[id] => 1114
[price] => 1695
)
[1] => stdClass Object
(
[id] => 1115
[price] => 2250
)
[2] => stdClass Object
(
[id] => 1116
[price] => 2295
)
)
或者任何人都可以建议我,如何循环原始数组来计算一个房子的总价?
答案 0 :(得分:3)
您可以使用array_reduce
$data = array_reduce($data, function ($a, $b) {
$id = $b->houseid;
unset($b->houseid);
$a[$id][] = $b;
return $a;
});
var_dump($data);
输出
array (size=2)
58 =>
array (size=2)
0 =>
object(stdClass)[1]
public 'id' => int 1111
public 'price' => int 2995
1 =>
object(stdClass)[2]
public 'id' => int 1112
public 'price' => int 4050
60 =>
array (size=3)
0 =>
object(stdClass)[3]
public 'id' => int 1114
public 'price' => int 1695
1 =>
object(stdClass)[4]
public 'id' => int 1115
public 'price' => int 2250
2 =>
object(stdClass)[5]
public 'id' => int 1116
public 'price' => int 2295