2012-11-27 43 views
-1

我如何通过houseid对这个数组进行分组?如何在PHP中对数组进行分组?

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

向我们展示[你已经试过(http://www.whathaveyoutried.com)。这方面有很多类似的问答。 – Kermit

+0

我需要得到一些日期之间的houseids,并从sql语句中得到这个数组...我需要将它重新格式化为需要 –

+1

,它们有很多数组函数,他们至少应该在提问之前检查它们显示没有努力 –

回答

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 

Full live Demo

+1

OMG,我从来不知道有关array_reduce,非常感谢Baba ...... –

相关问题