前往顾页
以后地位: 主页 > 收集编程 > Php实例教程 >

php将一个字符串转变成键值对数组的效力问题

时候:2013-03-30 21:42来源:知行网www.zhixing123.cn 编辑:麦田守望者

有如许一种需求,将情势为“TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037”的字符串转换成以下格局的数组:
 

 

Array
(
    [TranAbbr] => IPER
    [AcqSsn] => 000000073601
    [MercDtTm] => 20090615144037
)
/* 将一个字符串转变成键值对数组
 * @param    : string str 要措置的字符串 $str ='TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037';
 * @param    : string sp 键值对分开符
 * @param    : string kv 键值分开符
 * @return    : array*/
function str2arr ($str,$sp="|",$kv="=")
{
    $arr = str_replace(array($kv,$sp),array('"=>"','","'),'array("'.$str.'")');
    eval("\$arr"." = $arr;");
    return $arr;
}

一般时候,年夜家很容易想到用explode和foreach来措置,代码以下:
 

//传统的做法
function str2arr1 ($str)
{
$arr = explode("|",$str);
$r = array();
foreach ($arr as $val )
{
$t = explode("=",$val);
$r[$t[0]]= $t[1];
}
return $r;
}
$a='TranAbbr=IPER|AcqSsn=000000073601|

MercDtTm=20090615144037|TranAbbr=IPER|

AcqSsn=000000073601|MercDtTm=20090615144037|

TranAbbr=IPER|AcqSsn=000000073601|

MercDtTm=20090615144037|TranAbbr=IPER|

AcqSsn=000000073601|MercDtTm=20090615144037|

TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037|TranAbbr=IPER|

AcqSsn=000000073601|MercDtTm=20090615144037|TranAbbr=IPER|AcqSsn=000000073601|

MercDtTm=20090615144037|TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037|

TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037|TranAbbr=IPER|

AcqSsn=000000073601|MercDtTm=20090615144037|TranAbbr=IPER|AcqSsn=000000073601|

MercDtTm=20090615144037|TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037|

TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037|TranAbbr=IPER|

AcqSsn=000000073601|MercDtTm=20090615144037';
for ($i=0;$i<50;$i++)
{
$t = microtime();
$b = str2arr1($a);
$t1 = microtime();
str2arr($a);
$t2 = microtime();
echo $t2+$t-2*$t1.'<br />';
}
两种写法各有上风:

1、 第一种容易想到,耳熟能详;第二种不容易想到,且eval函数在利用时要重视宁静隐患。

2、 当待措置的字符串终究转成的数组比较庞年夜时,第二种体例的效力将年夜年夜高于传统的做法。

顶一下
(3)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):php php教程 php实例教程 php5 php源代码 php根本教程 php技能 php6
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣