$str = "array(2) { [1] => array(6) { ["m_product_header_id"] => int(1) ["product_name"] => string(5) "test1" ["product_unitprice"] => int(3) ["product_point_rate"] => int(4) ["limit_nums"] => int(5) ["limit_times"] => int(6) } [2] => array(6) { ["m_product_header_id"] => int(2) ["product_name"] => string(5) "test2" ["product_unitprice"] => int(4) ["product_point_rate"] => int(5) ["limit_nums"] => int(6) ["limit_times"] => int(7) } } ";$test = array();现在需要将字符串$str转化到数组$test里面,形成一个2维数组。各位大侠帮忙!

解决方案 »

  1.   

    貌似是var_dump打印出来的数组变量信息
      

  2.   

    好像是要将var_dump 的结果反转回原数组。
      

  3.   

    哈哈 要有 re_var_dump函数就好了!!!O.o 
      

  4.   


    $str = "array(2) { [1] = > array(6) { ["m_product_header_id"] = > int(1) ["product_name"] = > string(5) "test1" ["product_unitprice"] = > int(3) ["product_point_rate"] = > int(4) ["limit_nums"] = > int(5) ["limit_times"] = > int(6) } [2] = > array(6) { ["m_product_header_id"] = > int(2) ["product_name"] = > string(5) "test2" ["product_unitprice"] = > int(4) ["product_point_rate"] = > int(5) ["limit_nums"] = > int(6) ["limit_times"] = > int(7) } } "; $reg = array(
    '/array\((\d+)\)\s*/is',
    '/\s=\s>\s/',
    '/\[(["\w]+)\]/e',
    '/int\((\d+)\)|string\((\d+)\)\s"(\w+)"/e'
    );
    $replace = array(
    'a:\\1:',
    '',
    'key_repalce("\\1")',
    'val_repalce("\\1", "\\2", "\\3")'
    );function key_repalce($e) {
    if(!$e) return; if(is_numeric($e)) {
    return 'i:'.$e.';';
    } elseif(is_string($e)) {
    $e = str_replace('"', '', $e);
    return 's:'.strlen($e).':"'.$e.'";';
    }
    }function val_repalce($e_int, $e_strlen, $e_str) {
    if($e_int) {
    return 'i:'.$e_int.';';
    } elseif($e_strlen) {
    return 's:'.$e_strlen.':"'.$e_str.'";';
    }
    }$serialize_str = str_replace(' ', '', preg_replace($reg, $replace, $str));print $serialize_str;
    print "\n";
    print_r(unserialize($serialize_str));
      

  5.   

    上面的第一句代码因该是:$str = 'array(2) { [1] = > array(6) { ["m_product_header_id"] = > int(1) ["product_name"] = > string(5) "test1" ["product_unitprice"] = > int(3) ["product_point_rate"] = > int(4) ["limit_nums"] = > int(5) ["limit_times"] = > int(6) } [2] = > array(6) { ["m_product_header_id"] = > int(2) ["product_name"] = > string(5) "test2" ["product_unitprice"] = > int(4) ["product_point_rate"] = > int(5) ["limit_nums"] = > int(6) ["limit_times"] = > int(7) } } '; 楼主居然用了双引号,检测了一下才发现!
      

  6.   

    $str = 'array(2) { [1] = > array(6) { ["m_product_header_id"] = > int(1) ["product_name"] = > string(5) "test1" ["product_unitprice"] = > int(3) ["product_point_rate"] = > int(4) ["limit_nums"] = > int(5) ["limit_times"] = > int(6) } [2] = > array(6) { ["m_product_header_id"] = > int(2) ["product_name"] = > string(5) "test2" ["product_unitprice"] = > int(4) ["product_point_rate"] = > int(5) ["limit_nums"] = > int(6) ["limit_times"] = > int(7) } } '; $test = array();如果你对 $str 这个串绝对信任的话:eval("\$test = $str;");
      

  7.   

    你可以用 var_dump 和 eval 实现 array <=> string  的转换;
    安全一点,也可以用
    serialize 和 unserialize 实现 array <=> string  的转换
      

  8.   

    错了是 var_export 和 eval 实现 array  <= > string  的转换;