字符串转二维数组问题 小弟我刚开始 写 PHP 能力有限,也许思路也不行,不知道各位有什么好的方法帮我解决一下这个问题,在些万分感谢 !*8|1,"red",2 *9|4,"blue",5 这样一个字符串,我想转成 array([8]=>array(1,"red",2),[9]=>array(4,"blue",5))这样的二维数组。哪个帅哥或者 姐姐帮忙下谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $str = '';$arr = explode('|', $str);$ar = array();foreach($arr as $val){$ar[] = explode(',', $val);}差不多就这个思路 <?php$str = '*8|1,"red",2 *9|4,"blue"';$arr = explode('|', $str);$ar = array();$len = count($arr);for($i = 0; $i < $len; $i++) { $key = trim($arr[$i], '*'); $val = explode(',', $arr[++$i]); $ar[$key] = $val;} $s = '*8|1,"red",2 *9|4,"blue",5';$arr1 = explode('*', $s);$arr2 = array();foreach($arr1 as $val){ if($val){ $arr = explode('|', $val); $arr3 = explode(',', $arr[1]); foreach($arr3 as $key => $v2){ $arr2[$arr[0]][] = $v2; } }}print_r($arr2); 楼上的写得对,太感谢了,我还得加工成二维数据里要用固定的KEY 来查询,$v['ecount'] 这样来查的嘿 $s = '*8|1,"red",2 *9|4,"blue",5';preg_match_all("/ ?\*(\d+)\|([^*]+)/", $s, $r);$ar = array();foreach($r[1] as $k=>$v) { $ar[$v] = array_map('foo', split(',', $r[2][$k]));}function foo($s) { return trim($s, '"');}print_r($ar);Array( [8] => Array ( [0] => 1 [1] => red [2] => 2 ) [9] => Array ( [0] => 4 [1] => blue [2] => 5 ) $str = '*8|1,"red",2 *9|4,"blue",5';$str = preg_replace('#\*(\d+)\|#', '),$1=>array(', $str);$str = substr($str, 2) . ')';eval("\$arr = array({$str});");print_r($arr);/*Array( [8] => Array ( [0] => 1 [1] => red [2] => 2 ) [9] => Array ( [0] => 4 [1] => blue [2] => 5 ) )*/ 不需要循环的做法,我觉得还可以优化,谁来试试$s = '*8|1,"red",2 *9|4,"blue",5';$s=preg_replace("/([^\|\*]+)\|/iuU", "$1=>array(", $s);$s=str_replace(" *",'),',$s);$s=trim($s," *");$s='$a=array('.$s.'));';//echo $s;eval($s);var_dump($a); $str = '*8|1,"red",2 *9|4,"bl *ue",5';$r = array();preg_replace('#\*([^\|]+)\|((?:(?!\s\*[^\|]+\|[^,]+).)*)#se','$r[\1] = explode(",","\2")',$str);echo "<pre/>";print_r($r); 关于PHP无刷新传值 问一个mysql遍历转json的问题. 小弟初学PHP写了个文件遍历,求大神看看,点评点评 求 linux/centos 5 命令大全,在线等 关于PHP+MYsql大量数据处理的问题 求一js正规则表达式 php如何得到http://url/dir/的内容,类似opendir 用mssql_query查询数据出现错误,为什么有的table可以,有的不可以,部分table是从acess中导入的? 因为你无权连接数据库服务器?? 一个有点难度的问题,高手进 PHP SOAP 扩展 mysql 的视图和存储过程的效率?
$arr = explode('|', $str);
$ar = array();
foreach($arr as $val){
$ar[] = explode(',', $val);
}
差不多就这个思路
$arr = explode('|', $str);
$ar = array();$len = count($arr);
for($i = 0; $i < $len; $i++) {
$key = trim($arr[$i], '*');
$val = explode(',', $arr[++$i]);
$ar[$key] = $val;
}
$arr1 = explode('*', $s);
$arr2 = array();
foreach($arr1 as $val){
if($val){
$arr = explode('|', $val);
$arr3 = explode(',', $arr[1]);
foreach($arr3 as $key => $v2){
$arr2[$arr[0]][] = $v2;
}
}
}
print_r($arr2);
foreach($r[1] as $k=>$v) {
$ar[$v] = array_map('foo', split(',', $r[2][$k]));
}function foo($s) {
return trim($s, '"');
}print_r($ar);Array
(
[8] => Array
(
[0] => 1
[1] => red
[2] => 2
) [9] => Array
(
[0] => 4
[1] => blue
[2] => 5
)
$str = '*8|1,"red",2 *9|4,"blue",5';
$str = preg_replace('#\*(\d+)\|#', '),$1=>array(', $str);
$str = substr($str, 2) . ')';
eval("\$arr = array({$str});");
print_r($arr);
/*Array
(
[8] => Array
(
[0] => 1
[1] => red
[2] => 2
)
[9] => Array
(
[0] => 4
[1] => blue
[2] => 5
)
)
*/
$s=preg_replace("/([^\|\*]+)\|/iuU", "$1=>array(", $s);
$s=str_replace(" *",'),',$s);
$s=trim($s," *");
$s='$a=array('.$s.'));';
//echo $s;
eval($s);
var_dump($a);
$str = '*8|1,"red",2 *9|4,"bl *ue",5';
$r = array();
preg_replace('#\*([^\|]+)\|((?:(?!\s\*[^\|]+\|[^,]+).)*)#se','$r[\1] = explode(",","\2")',$str);
echo "<pre/>";
print_r($r);