【问题标题】:How can I display MySQL-data in an array as in example?如示例所示,如何在数组中显示 MySQL 数据?
【发布时间】:2019-10-18 15:34:17
【问题描述】:

我想使用 StackOverflow PHP Determine when multiple(n) datetime ranges overlap each other 上显示的解决方案! 为了使用它,我从 MySQL 查询结果。在解决方案中,用户可以有多个日期条目。

到目前为止,我有一个数组,但它没有按添加日期的用户(命名为受邀者)分组。

    while ($row = mysqli_fetch_assoc($result)) {

        $arr[$row['invitee']];

        $temp = array($row['start_time'], $row['end_time']);

        $arr[] = $temp;
    }

输出结果如下:

Array
(
    [0] => Array
        (
            [0] => 2019-10-16 00:00:00
            [1] => 2019-10-31 23:00:00
        )

    [1] => Array
        (
            [0] => 2019-10-17 12:12:00
            [1] => 2019-10-18 20:40:00
        )

    [2] => Array
        (
            [0] => 2019-10-12 10:00:00
            [1] => 2019-10-24 20:00:00
        )
...

我期望或想要实现的是上面提到的帖子中所示的数组:

$availability = [
    [
        ["2016-04-30 12:00", "2016-05-01 03:00"]
    ],
    [
        ["2016-04-30 03:00", "2016-05-01 03:00"]
    ],
    [
        ["2016-04-30 03:00", "2016-04-30 13:31"],
        ["2016-04-30 15:26", "2016-05-01 03:00"]
    ]
];

使用帖子中的解决方案。 但是我怎样才能实现我的 MySQL 数据可以这样显示呢?

【问题讨论】:

  • 你试过解决方案了吗?

标签: php mysql multidimensional-array


【解决方案1】:

只需要修改while 中的数组,如下所示:

while ($row = mysqli_fetch_assoc($result)) {
    $temp = array(array($row['start_time'], $row['end_time']));
    $arr[$row['invitee']] = $temp; 
}

在此处添加另一个数组array(array($row['start_time'], $row['end_time']))

编辑:

<?php
$finalArray = array();
while ($row = mysqli_fetch_assoc($result)) {
  $finalArray[$row['invitee']][] = array($row['start_time'], $row['end_time']);
}
?>

说明:

使用此代码,您可以获得针对每个用户的多个邀请。

【讨论】:

  • 我正在尝试。似乎不起作用,但我认为这也可能是我这边的问题。有四个不同的受邀者,在表中有多个条目。所以我需要安排它们捆绑在一起(就像预期结果中的第三个条目)。
  • 对此一无所知,但如果您有多个用户,那么您将无法跟踪您必须在索引中使用用户 ID 我 thnk @nucky
  • 是的,看起来是这样。也许我宁愿找到另一种解决方案,而不是主题中提出的解决方案。
  • 确定@nucky:那么您可以修改您的问题或关闭
  • @nucky:我已经使用$arr[$row['invitee']]更新了我的答案
【解决方案2】:

看看是否有效:

    $res = array();
while ($row = mysqli_fetch_assoc($result)) { 
$res[ ]= [$row['start_time'], $row['end_time']];
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 2018-04-14
    • 2016-12-10
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多