请问怎样将
"a=1,b=2,c=3"
这样的字符串
转换成
array(
  'a'=>1,
  'b'=>2,
  'c'=>3,
)
这样的数组呀

解决方案 »

  1.   

    $str = "a=1,b=2,c=3";
    $arr = array();foreach(explode(',',$str) as $v)
    {
        $arr[$v{0}] = $v{2};
    }print_r($arr);
      

  2.   

    如果把a=1,b=2,c=3换成ab=1,bc=2,cd=3的话,就有问题了
      

  3.   

    $str = "a=1,b=2,c=3";
    $cc=array();
    $bb=array();
    foreach(explode(',',$str) as $v)
    {
    $k=count($cc);
        $cc[$k]=explode('=',$v);
    }
    for($i=0;$i<count($cc);$i++)
    {
    $sum=count($bb);
    $bb[$sum]=array($cc[$i][0]=>$cc[$i][1]);
    }
    print_r($cc);
    print_r($bb);这样可以,不过得出来的是2维数组,程序也麻烦点,别介意啊
      

  4.   


    $b = 'adfsa=1,dasdfasdb=2,asdfaefasdfasc=3';
    eval('$c=array('.preg_replace("/([a-z]+)=/i","'\\1'=>",$b).');');
    print_r($c);---------- php ----------
    Array
    (
        [adfsa] => 1
        [dasdfasdb] => 2
        [asdfaefasdfasc] => 3
    )Output completed (0 sec consumed)
      

  5.   

    用parse_strparse_str(str_replace(',','&',$str),$output);print_r($output);
      

  6.   

    parse_str挺不错的,一句代码搞定<?php
    $str = "ab=1,bc=2,cd=3";
    function strToArray($str) {

    $aArr = explode(",", $str);
    $aTempArr = array();
    foreach($aArr as $sArrDetail) {

    $aValue = explode("=", $sArrDetail);
    $aTempArr[$aValue[0]] = $aValue[1];
    }
    return $aTempArr;
    }
    print_r(strToArray($str));
    ?>
      

  7.   

    $str = "a=1,b=2,cc=3";
    preg_match_all('/(\w+)=(\d+)/',$str,$m);
    $arr = array_combine($m[1],$m[2]);
    print_r($arr);
      

  8.   

    文档上是这样解释parse_str的
    解析 query 字符串成变量。
    语法: void parse_str(string str);
    返回值: 无
    函数种类: 资料处理
    内容说明 
    本函数可将浏览器返回的 GET 方法的 QUERY_STRING 字符串解析。返回的变量名及值就依 QUERY_STRING 的名称及值。能不能帮忙解释一下为什么要这样用
    parse_str(str_replace(',','&amp;',$str),$output);
    谢谢,因为我是刚学还不太懂,知道的帮帮忙
      

  9.   

    将$str转换为a=1&b=2&c=3 才能被parse_str解析