[英]How to convert this string into an array
我有一个要从数据库中返回的字符串,我想将其用作数组。 它已经是一个assoc数组形式。 这是到目前为止的样例。 我该怎么做?
'test1' => 'value 1',
'test1' => 'value 1a,
'test2' => 'value 2'
好的,这是数据库代码:
SELECT
inventory.invId,
GROUP_CONCAT(CONCAT( '''', inventory.vehicle, ''' => ', '''', inventory.color, '''' )) AS vehicle,
vehicle.vehicle_id
FROM
inventory
Inner Join vehicle ON vehicle.invId = inventory.invId
这是数据库结果中的print_r
Array
(
[0] => Array
(
[system] => AR3
[vehicle] => 'geo' => 'red', 'honda' => 'blue', 'ford' => 'black'
[vehicle_id] => 1232132
)
)
我强烈建议不要以这种格式返回数据。 首先,您需要更加小心地创建这种特殊格式以使其可解析。 如果一个值包含字符“ '
“? 您将获得'key' => 'value ''
,这将使整个解析过程陷入循环。 其次,它是一种非平凡的形式,需要使用词法分析器或使用PHP标记器,这比它的价值大得多。
为了以字符串形式传输本机结构,有一种特殊的序列化格式 。 您只是在这里重新发明轮子。 糟糕的是,我可能会补充。 :)
只需将结果返回为普通的SELECT * FROM table …
并在PHP中构建数组,这就是行之有效的最快方法。
$f = array();
$a1 = explode( ',', $string );
foreach( $a1 as $s ) {
$a2 = explode( '=>', $s ) {
$a2[0] = preg_replace( "/^'/", '', $a2[0] );
$a2[0] = preg_replace( "/'\s*$/", '', $a2[0] );
$a2[1] = preg_replace( "/^\s*'/", '', $a2[1] );
$a2[1] = preg_replace( "/'$/", '', $a2[1] );
$f[$a2[0]] = $a2[1];
}
}
注意:感谢您添加代码块格式化代码! ... PS同意关于如何更好地返回结果的答案:这只是对Q的字面回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.