“有没有一种方法可以从一个MySql命令中获取3+维数组”这个问题的直接答案是yes, sort of - WordPress通常通过以下方式从MySQL行存储和检索多维数据:serialize()
ing和unserialize()
将结构化数据转换为字符串格式,因此使用WordPress的数据库交互机制当然是可能的。这个Metadata API 例如,在传递结构化数据时自动处理此过程。
然而,您的问题更像是“如何将数据库结果重新构造为自定义格式?”
最“WordPress-y”的方式如您所述-使用WP_User_Query
查询用户,然后将结果重新排列到所需的结构中。
可以创建一个定制的SQL查询,根据需要对结果进行格式化,但这似乎有违直觉——关系数据库的设计非常强调二维数据。查询地址:Stack Overflow 如果你对这样的问题感兴趣的话。您可以使用parse_query()
方法WP_Query
.
为了获得某一年内注册的用户的结构,按注册月份分组,我将执行以下操作:
function wpse225632_get_users_by_reg_month( $year = null ) {
$args = array();
if( isset( $year ) )
$args[ \'date_query\' ] = array( \'year\' => $year );
$users = get_users( $args );
$users_by_month = array();
foreach( $users as $user ) {
$reg_month = mysql2date( \'m\', $user->user_registered );
if( ! isset( $users_by_month[ $reg_month ] ) )
$users_by_month[ $reg_month ] = array();
$users_by_month[ $reg_month ][] = $user;
}
return $users_by_month;
}
如果要经常运行此查询,则可能希望使用
Transients API, 然后,每当注册新用户时,使缓存无效并删除瞬态。