$str = 'pingpai,112,113,115,jijie,3,7';
$params = array(
     'pingpai'=>array('0'=>'112','1'=>'113','2'=>'115'),
     'jijie'=>array('0'=>'3','1'=>'7')
)求将上述$str形式的字符串转换为$params形式的数组

解决方案 »

  1.   


    $str = 'pingpai,112,113,115,jijie,3,7';
    $str = substr(preg_replace('/([a-z]+),/i', '),"\\1" =>array(', "$str,)"), 2);
    $arr = eval("return array($str);");var_dump($arr);
    /**array(2) {
      ["pingpai"]=>
      array(3) {
        [0]=>
        int(112)
        [1]=>
        int(113)
        [2]=>
        int(115)
      }
      ["jijie"]=>
      array(2) {
        [0]=>
        int(3)
        [1]=>
        int(7)
      }
    }
    /**/
      

  2.   

    我只是举一个例子,我要的是适合所有情况的,2楼说的explode估计是只看了帖子标题就回复的吧,内容看了吗?
      

  3.   


    function explode_str($str) {
    $arr = explode(",",$str);
    $a = array();
    $b = array();
    $c = array();
    foreach ($arr as $ar) {
    if (is_numeric($ar)) {
    $a[] = $ar;
    } else {
    $b[] = $ar;
    }
    $c = array (
    $a,
    $b
    );
    }
    return $c;
    }
    $str = 'pingpai,112,113,115,jijie,3,7';
    print_r(explode_str($str));
      

  4.   

    $str = 'pingpai,112,113,115,jijie,3,7';
    #1.
    foreach(explode(',',$str) as $v)
    {
            if(!is_numeric($v))
            {
                    $key = $v;continue;
            }
            $ret[$key][] = $v;
    }print_r($ret);
    #2.                                                                                                                                         
    parse_str(preg_replace('#,?([a-z]+),#i','&\1=',$str),$out);
    print_r(array_map(create_function('$a','return explode(",",$a);'),$out));
      

  5.   

    $str = 'pingpai,112,113,115,jijie,3,7';
    preg_replace('/,?([a-z]+),((?:,?[\d])+)/ie', '$params[$1]=explode(",","$2")', $str);
    print_r($params);
    Array
    (
        [pingpai] => Array
            (
                [0] => 112
                [1] => 113
                [2] => 115
            )    [jijie] => Array
            (
                [0] => 3
                [1] => 7
            ))