PHP(NETTE) - >按对象值分组对象数组

时间:2018-03-28 08:25:25

标签: php arrays nette

我正在使用NETTE,我从数据库中获取数据(对象)。 例如:

array{ 
   [0]=> object{ ["CestyNazev"]=> "K00301" ["datum"]=> "2018-03-27"
   [1]=> object( ["CestyNazev"]=> "K00302" ["datum"]=> "2018-03-27"
   [2]=> object( ["CestyNazev"]=> "KLA101" ["datum"]=> "2018-03-26"
   [3]=> object( ["CestyNazev"]=> "KLA102" ["datum"]=> "2018-03-29"
}

我想按日期对它进行分组,因此结果应为(数组):

**2018-03-27**
K00301
K00302

**2018-03-26**
KLA101

**2018-03-29**
KLA102
你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

这是从select创建多维数组的一般解决方案。编写供模型或演示者使用。

$table = $database->table->select('datum, CestyNazev');

$result = [];

foreach ($table as $value) {
    if (array_key_exists($value->datum, $result)) {
        array_push($result[$value->datum], $value->CestyNazev);
    } else {
        $result[$value->datum] = [$value->CestyNazev];
    }
}

结果

array (3)
    2018-03-27 => array (2)
        0 => K00301
        1 => K00302
    2018-03-26 => array (1)
        0 => KLA101
    2018-03-29 => array (1)
        0 => KLA102