一、獲取毫秒時間戳
方法一、
/**
* 獲取時間戳到毫秒,並固定位數
* @return bool|string
*/
public static function getMillisecond(){
list($msec, $sec) = explode(' ', microtime());
$msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
return $msectimes = substr($msectime,0,13);
}
方法二、
/** 獲取當前時間戳,精確到毫秒 */
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
二、將數組鍵值直接轉成url參數
使用http_build_query()函數
http_build_query()函數的作用是使用給出的關聯(或下標)數組生成一個經過 URL-encode 的請求字符串。
寫法格式:http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
打個比方:$data = array("name"=>"callback" , "value"=>"test");
$rescult = http_build_query($data);
我們輸出下$rescutl可以得到:
name=callback&value=test
/**
* 數據驗籤
* @param array $data
* @param string $key
* @return string
*/
public function getSign($data,$key)
{
$para_filter = $this->paraFilter($data);
$para_sort = $this->argSort($para_filter);
$prestr = $this->createLinkString($para_sort);
return $this->md5Encrypt($prestr, $key);
}
/**
* 除去數組中值爲空參數
* @param array $data
* @return array
*/
public function paraFilter($data)
{
$para_filter = array();
foreach ($data as $key=>$val)
{
if($key == "sign" || $val == '' || $key == "json")continue;
else $para_filter[$key] = $data[$key];
}
return $para_filter;
}
/**
* 對待簽名參數數組排序
* @param array $para
* @return array
*/
public function argSort($para)
{
ksort($para);
reset($para);
return $para;
}
/**
*把數組所有元素,按照“參數=參數值”的模式用“&”字符拼接成字符串
* @param $para
* @return bool|string
*/
public function createLinkString($para) {
$arg = "";
foreach ($para as $key=>$val)
{
$arg.=$key."=".$val."&";
}
//如果存在轉義字符,那麼去掉轉義
if(get_magic_quotes_gpc()){
$arg = stripslashes($arg);
}
return $arg;
}