带有逗号和冒号的SQL列结果到PHP数组
我有一个sql查询,它为每个结果返回一个字符串,如带有逗号和冒号的SQL列结果到PHP数组,php,sql,arrays,explode,Php,Sql,Arrays,Explode,我有一个sql查询,它为每个结果返回一个字符串,如1:One、2:Two、3:Three 现在,我想将这些字符串中的每一个转换为如下所示的PHP数组: Array( 1: One, 2: Two, 3: Three ) 我知道我可以在另一个函数中使用一个explode函数来实现这一点,但是,如果我在mysql查询中有500多个结果,这不是太过分了吗?有没有更好的办法得到这样的东西 下面是一个mysql代码示例,它创建了类似于我给出的字符串结果的内容: GROUP_CON
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返回两行的示例:
|-----------------------------------------------------------------------|
| 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 |
|-----------------------------------------------------------------------|
我想知道的是将每行的所有组
和组
的字符串转换为PHP数组的最佳方法。正如我所说的,我知道我可以使用2explode
函数(一个在另一个内部使用foreach循环)来实现,但是如果我的查询返回500多个结果呢?对于服务器来说,为500+行中的每一行计算explode
,这似乎是一个很大的过度消耗
只是澄清一下,all_groups
类似于个人可用的组,groups\u assigned
是个人从可用的all_groups
注册的组
另一种可能是将其分为3个不同的查询?只需根据冒号进行分解,否则,形成查询以分别提供键和值 PHP示例(未测试,仅示例):
你的问题是什么?展示结果如何?第1排| 1 | 1排| 2 | 2排???我会用爆炸来做。也许你可以将它连接到json数组并进行json_解码,但我不知道它是否快如果你只是想在客户端拆分数据,那么首先不要在mysql中将数据混合在一起…我用一个更详细的例子更新了我问题的信息。我想他的字符串看起来像“1:1,2:2,3:3”首先,我想到了这一点;需要某种“每行”分隔符。。也许他可以通过提供的例子自己来理解这一点,从而为自己指明正确的方向@RobW我用一个更详细的例子更新了我问题的信息。请看我的编辑=)。@CristianoSantos-即使有一百万行数据,也不会让PHP/web服务器感到紧张。数据库查询应该只查询数据,脚本应该转换/处理数据。希望这有帮助@RobW那么每一行中数组中字符串的转换不会显著降低服务器的速度?即使在另一个内部有一个
foreach
,使用2个explode
函数?
$result = $pdo->query($query);
$myArray = array();
while($row = $result->fetchAll(PDO::FETCH_ASSOC)) {
$myGroup = explode(": ", $row['all_active_numbers']);
$myArray[][$myGroup[0]] = $myGroup[1];
}
var_dump($myArray);