foreach在php5中只需要遍历一次链表,php7只需要依次遍历桶数组。whil
/**
*php字符串异或算法
*param数组键
*@paramrequest$request
*@returnmixed|string|void
*/
公共函数setsecretkey(request$request){
$keyarr$request-input(key);
如果(!is_array($keyarr)||empty($keyarr))
返回;
foreach($keyarras$v){
if(empty($v)||(strlen($v)!32)){
返回;
}
}
if(count($keyarr)1)
return$keyarr[0];
$arrlength计数($keyarr);
initkey00000000000000000000000000000000美元;
$initkeyarrstr_split($initkey);
对于($i0;$i$arrlength$i){
$newkey
for($j0;$jstrlen($keyarr[$i]);$j){
$str
$tmparrstr_split($keyarr[$i]);
$tmpastr_pad(base_convert($tmparr[$j],16,2),4,0,str_pad_left);
$tmpbstr_pad(base_convert($initkeyarr[$j],16,2),4,0,str_pad_left);
for($k0;$kstrlen($tmpa);$k){
$str。(intval($tmpa[$k])^intval($tmpb[$k]);
}
$tmponekeystrtoupper(base_convert($str,2,16));
unset($str);
$newkey。$tmponekey
}
unset($initkeyarr);
$initkeyarrstr_split($newkey);
}
返回join($initkeyarr);
}