【发布时间】:2013-07-02 17:09:54
【问题描述】:
我有一个 sql 查询,每个结果都返回一个字符串,如 1:One, 2:Two, 3:Three。
现在我想将这些字符串中的每一个都转换成这样的 PHP 数组:
Array(
1: One,
2: Two,
3: Three
)
我知道我可以在另一个函数中使用一个 explode 函数来做到这一点,但是,如果我在 mysql 查询上有 500 多个结果,那不是太过分了吗?有没有更好的方法来获得这样的东西?
这是一个 mysql 代码示例,它创建类似于我给出的字符串结果的内容:
GROUP_CONCAT(DISTINCT cast(concat(cast(number.id AS char),': ',number.name) AS char) order by number.id SEPARATOR ', ') AS all_active_numbers
编辑
下面是一个 mysql 可能返回 2 行的示例:
|-----------------------------------------------------------------------|
| id | all_groups | groups_assigned |
| 1 | 1:Team A, 2:Team B, 3:Team C | 1:Team A |
| 2 | 1:Team A, 2:Team B, 3:Team C | 2:Team B, 3:Team C |
|-----------------------------------------------------------------------|
我想知道的是将每行的all_groups和groups_assigned的字符串转换为PHP数组的最佳方法。正如我所说,我知道我可以使用 2 explode 函数(使用 foreach 循环在另一个函数中)但是如果我的查询返回 500+ 个结果怎么办?对于服务器来说,为 500 多行中的每一行计算 explode's 似乎有点过头了。
澄清一下,all_groups 类似于可供个人使用的组,groups_assigned 是该人从可用的all_groups 注册的组。
另一种可能性是将其分为 3 个不同的查询?
【问题讨论】:
-
你的问题是什么?
-
显示结果如何? row1|1|一个 row2|2|两个????
-
我会用爆炸来做。也许您可以将它连接到 json 数组并执行 json_decode 但我不知道它是否更快
-
如果你只是要在客户端拆分数据,那么首先不要在mysql中将数据一起smoosh ...
-
我用更详细的示例更新了我的问题信息。