我有一个SQL数据库表,如下所示:

login time_start
name1 17:30:00
name2 18:15:00
name3 16:30:00
name2 17:30:00

我希望将其转换为数组,并将小时作为id与对应于该小时的所有登录相关联:

Array ( 
[ 18:15:00 ] => Array ( [login] => name2 ) 
[ 17:30:00 ] => Array ( [login] => (name1, name3) ) 
[ 16:30:00 ] => Array ( [login] => name3 )
)

我试过这样的方法:

if ($result && $result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $aReturn[$row['time_start']] = array(
            'login' => $row['login']
        );
   }
}

但它只返回了3行,只有一个登录名:

Array ( 
[16:30:00] => Array ( [login] => name3 ) 
[17:30:00] => Array ( [login] => name1 ) 
[18:15:00] => Array ( [login] => name2 ) 
)

推荐答案

这个就行了

if ($result && $result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $aReturn[substr($row['time_start'], 0, 2)]['login'][] = $row['login'];
    }
}

为了清楚起见你可以这么做.

if ($result && $result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
         if (!isset($aReturn[$hour = substr($row['time_start'], 0, 2)])) {    
            $aReturn[$hour] = ['login'=>[]];
         }
         $aReturn[$hour]['login'][] = $row['login'];
    }
}

但在php中这在功能上不是必需的.

Php相关问答推荐

PHP php_mongodb.dll for 32bit

为什么在我的PHP联系人脚本中开机自检后出现未定义变量错误?

在WooCommerce中设置带有国家/地区和年份前缀的顺序序号

如何在execute语句中使用存储过程参数?

如果日期是过go 日期,则隐藏事件发布类型

如何在WordPress REST API中判断应用程序密码

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

WordPress:今天的计数';修改和发布的帖子

WooCommerce产品页面上没有产品详细信息

Shopware 6 插件:如何删除布尔配置并将其迁移到多选配置

主机中未检索用户表数据

避免在 WooCommerce 中多次触发挂钩函数

PHP - 计算非数值数组

为WooCommerce中的运输方式ID设置必填的 checkout 订单备注字段

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

如何在 Laravel 中修改嵌套数组的键?

如何从 PHP 中的 .txt 文件中列出今天生日的人的姓名?

同时执行odbc_execute、odbc_fetch_row和odbc_result

使用 OOP PHP 创建动态 WHERE 子句.如何实现 BETWEEN 运算符?

try 在 Laravel Blade 上显示值时出现未定义的变量 X 问题