字符串转二维数组问题 小弟我刚开始 写 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字符串替换的一个简单问题,在线等 php网站里嵌入.net网站 PHP在登录系统中,不管输入任何登录子页网址,都必须先登陆主页 如果多个 PHP 页面共享 mysql 查询结果? 从url.txt 文件中得到 内容并输出的问题,在线等 请问这个大括号是什么意思? dir类中read 方法返回的目录项的顺序如何定义呢 关于PHP SESSION的一个奇怪问题!! 又发现有新问题啦~~~~~~大家进来! 为什么我用session_start()时网页会显示警告信息,警告信息见文章内容 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);