Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有逗号和冒号的SQL列结果到PHP数组_Php_Sql_Arrays_Explode - Fatal编程技术网

带有逗号和冒号的SQL列结果到PHP数组

带有逗号和冒号的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

我有一个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返回两行的示例:

|-----------------------------------------------------------------------|
|   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数组的最佳方法。正如我所说的,我知道我可以使用2
explode
函数(一个在另一个内部使用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);