【问题标题】:PHP (NETTE) -> Group array of object by object valuePHP (NETTE) -> 按对象值分组对象数组
【发布时间】:2018-03-28 08:25:24
【问题描述】:

我正在使用 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

你能帮帮我吗?

【问题讨论】:

  • 好主意。去做吧!笑话不谈——你这样做有什么问题?到目前为止,您尝试过什么?
  • 我有想法可以使用。 ->fetchPairs("datum"); 但它每个日期只返回一个数据。因此,当我有一个日期(基准)的更多数据时,它只返回其中一个。

标签: php arrays nette


【解决方案1】:

这是从选择创建多维数组的通用解决方案。为在模型或演示者中使用而编写。

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2021-11-19
    • 2021-01-30
    • 2019-07-25
    • 2021-03-29
    • 2021-12-20
    相关资源
    最近更新 更多