高分求助:字符串转数组

sunrain_leo 2007-10-14 06:32:35
$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维数组。各位大侠帮忙!
...全文
205 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hejunbin 2007-10-15
  • 打赏
  • 举报
回复
哈哈 要有 re_var_dump函数就好了!!!O.o
Aylazhang 2007-10-15
  • 打赏
  • 举报
回复
好像是要将var_dump 的结果反转回原数组。
tony-杨 2007-10-15
  • 打赏
  • 举报
回复
貌似是var_dump打印出来的数组变量信息
总哈哈 2007-10-15
  • 打赏
  • 举报
回复
哪是键,哪是值,楼主都没有说清楚,就给个这叫别人转呀?我是看不懂了,等高手。。。。
faisun 2007-10-15
  • 打赏
  • 举报
回复
错了是 var_export 和 eval 实现 array <= > string 的转换;
faisun 2007-10-15
  • 打赏
  • 举报
回复
你可以用 var_dump 和 eval 实现 array <=> string 的转换;
安全一点,也可以用
serialize 和 unserialize 实现 array <=> string 的转换
faisun 2007-10-15
  • 打赏
  • 举报
回复
$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;");
lazyboy_wu 2007-10-15
  • 打赏
  • 举报
回复
上面的第一句代码因该是:

$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) } } '; 


楼主居然用了双引号,检测了一下才发现!
lazyboy_wu 2007-10-15
  • 打赏
  • 举报
回复

$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));
adverse 2007-10-14
  • 打赏
  • 举报
回复
字符串是怎么个规律?楼主都写明白点。
acong110 2007-10-14
  • 打赏
  • 举报
回复
没看明白
什么样的二级数组,把你想要的结果贴出来

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧