ksortphp
java:
1、用hashmap存儲元素,鍵值對方式。
Map<String, String> hashMap = new HashMap<String, String>(){
{
put("appid", "123");
put("apikey", "456");
put("secretKey", "789");
put("timestamp", "當前UNIX 時間戳,秒數,java中獲取");
}
};
2、java中可以通過Timestamp獲得UNIX 時間戳。
3、然後對hashmap進行升序排序。
4、然後寫一個方法遍歷hashmap,拼接成字元串格式為apikey=456&appid=123&secretkey=789×tamp=1389379498
然後對該字元串進行encoded編碼,輸出格式為apikey=456&appid=123&secretkey=789×tamp=1389379498
5、通過java中HMAC-SHA1演算法加密該字元串,$secretKey為安全密鑰。
6、再通過base64_encode加密第5步產生的字元串。這是最終sig結果。
java易混淆概念之類變數、實例變數、局部變數
類變數、實例變數、局部變數類變數是類中獨立於方法之外的變數,用static 修飾。
實例變數也是類中獨立於方法之外的變數,不過沒有static修飾。
局部變數是類的方法中的變數。
看下面的偽代碼說明:
public class Variable{
static int allClicks=0; //類變數
String str="hello world"; //實例變數
public void method(){
int i =0; //局部變數
}
}
實例變數也稱為:「域」,「成員變數」,在實體類或數據類中被稱為「屬性」或「欄位」。當實例變數可以改變時,被稱為對象的狀態。
2. final用於常量的聲明,規范要求常量的變數名是大寫的。
3. statci 在java 裡面用於對類方法和屬性進行修飾,其作用是什麼呢?
有兩種情況是non-static無法做到的,這時你就要使用statice。
第一種:你希望不論產生了多少個對象,或不存在任何對象的情形下,那些特定數據的存儲空間都只有一份;
第二種:你希望某個函數不要和class object綁在一起。即使沒有產生任何object,外界還是可以調用其static函數,或是取用其static data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
php代碼沒幾行,信息量很大,翻譯成java代碼行數量比較大。僅提供思路和php代碼解釋。
---------------
<?php
$appid = "123"; //數組裡面的值,id。
$apikey = "456"; //數組裡面的值,為加密密鑰。
$secretKey ="789"; //數組裡面的值,安全密鑰。
$timestamp = time(); ////數組裡面的值,獲得當前時間。
//UNIX 時間戳(timestamp)是 PHP 中關於時間日期一個很重要的概念,它表示從 1970年1月1日 00:00:00 到當前時間的秒數之和。
//echo輸出$timestamp變數值,例如輸出了1389379960
echo $timestamp;
//定義數組。以鍵值對方式存儲。
//'appid' 'apikey' 'secretkey' 'timestamp'是key,鍵。
//$appid $apikey, $secretKey $timestamp是value,值。
$params = array('appid'=>$appid, 'apikey'=>$apikey, 'secretkey'=>$secretKey, 'timestamp'=>$timestamp);
//對數組鍵值進行升序排序。排序結果為apikey appid secretkey timestamp
ksort($params);
//拼接數組中的參數,並且用encoded編碼。
//http_build_query -- 生成 url-encoded 之後的請求字元串。當數組沒有寫下標時,就會用第二個參數結合當前默認下標當前綴。
//$param_uri變數值,結果為apikey=456&appid=123&secretkey=789×tamp=1389379498
$param_uri = http_build_query($params,'','&');
echo $param_uri; //echo輸出結果為apikey=456&appid=123&secretkey=789×tamp=1389379498
//先使用調用hash_hmac方法加密,HMAC-SHA1演算法。
//$secretKey為安全密鑰,$param_uri為要加密的明文。'sha1'是HMAC-SHA1演算法。
//再調用base64_encode方法加密,base64_encode 使用 MIME base64 對數據進行編碼。
$sig = base64_encode(hash_hmac('sha1', $param_uri, $secretKey));
?>
java:
1、用hashmap存儲元素,鍵值對方式。
Map<String, String> hashMap = new HashMap<String, String>(){
{
put("appid", "123");
put("apikey", "456");
put("secretKey", "789");
put("timestamp", "當前UNIX 時間戳,秒數,java中獲取");
}
};
2、java中可以通過Timestamp獲得UNIX 時間戳。
3、然後對hashmap進行升序排序。
4、然後寫一個方法遍歷hashmap,拼接成字元串格式為apikey=456&appid=123&secretkey=789×tamp=1389379498
然後對該字元串進行encoded編碼,輸出格式為apikey=456&appid=123&secretkey=789×tamp=1389379498
5、通過java中HMAC-SHA1演算法加密該字元串,$secretKey為安全密鑰。
6、再通過base64_encode加密第5步產生的字元串。這是最終sig結果。
❷ php ksort和krsort的區別
ksort() 函數用於對數組單元按照鍵名從低到高進行排序。
krsort() 函數用於對數組單元按照鍵名從高到低進行排序。
❸ 把這個PHP 版本 修改為java 版本
public String sign(Object hashkey,List<?> datas){
Collections.sort((List<Integer>) datas); //排序
System.out.println(datas.get(0)); //列印第一個元素
String [] pre = new String[datas.size()]; //創建一個數組
int i = 0;
for (Object data : datas) {
Object key = data;
if(data == null || data == ""){
continue;
}
if (data == "hash"){
continue;
}
pre[i] = data.toString().replaceAll("/","");
}
String arg = "";
int qty = pre.length;
int index = 0;
for (String key : pre) {
Object val = key;
arg = key = val.toString();
if(index++ < qty){
arg = "&";
}
}
return "md5" + (arg + hashkey);
}
鬼知道對不對,無聊寫寫玩,我也不知道php啥意思
❹ PHP 里 sort() 和 asort() 有啥區別
sort只依據值從小到大排序,鍵值不參與排序
asort依據值排序,鍵值參與排序
ksort依據鍵值排序,值參與排序
sort只依據值從小到大排序,鍵值不參與排序。例
<?php
$arr=array("a"=>"d","d"=>"c","b"=>"a");
sort($arr);
var_mp($arr);
?>
結果
array(3) { [0]=> string(1) "a" [1]=> string(1) "c" [2]=> string(1) "d" }
asort依據值進行排序,鍵值參與排序
<?php
$arr=array("a"=>"d","d"=>"c","b"=>"a");
asort($arr);
var_mp($arr);
?>
結果
array(3) { ["b"]=> string(1) "a" ["d"]=> string(1) "c" ["a"]=> string(1) "d" }
ksort依據鍵值進行排序,值參與排序
<?php
$arr=array("a"=>"d","d"=>"c","b"=>"a");
ksort($arr);
var_mp($arr);
?>
結果
array(3) { ["a"]=> string(1) "d" ["b"]=> string(1) "a" ["d"]=> string(1) "c" }
❺ php krsort 適用於二維數組嗎
PHP 支持單維和多維的數組。同時提供了用資料庫查詢結果來構造數組的函數。
❻ php中ksort函數在什麼位置
數組處理函數庫
ksort
將數組的元素依索引排序。
語法: void ksort(array array);
返回值: 無
函數種類: 資料處理
內容說明
本函內數將數組中的元素依容索引排序,排序後的索引和值仍然對應。
使用範例
<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."\n";
}
?>
上面的例子,返回的資料為
fruits[a] = orange
fruits[b] = banana
fruits[c] = apple
fruits[d] = lemon
❼ php 數組重新排序 數字鍵名key
print_r(array_values($arr));
❽ php 編程 :怎樣把數組中的元素按鍵名大小排列
直接用ksort函數。
ksort($arr);
print_r($arr);
即可看到下面的結果。
❾ php的ksort排序如果鍵值有數字和字元串怎麼排序,第二個參數怎麼弄
0
=
SORT_REGULAR
-默認。把每一項按常規順序排列(Standard
ASCII,不改變類型)內。
1
=
SORT_NUMERIC
-
把每一項作為數字來處理。容
2
=
SORT_STRING
-
把每一項作為字元串來處理。
3
=
SORT_LOCALE_STRING
-
把每一項作為字元串來處理,基於當前區域設置(可通過
setlocale()
進行更改)。
4
=
SORT_NATURAL
-
把每一項作為字元串來處理,使用類似
natsort()
的自然排序。
5
=
SORT_FLAG_CASE
-
可以結合(按位或)SORT_STRING
或
SORT_NATURAL
對字元串進行排序,不區分大小寫。
❿ sort,asort,和 ksort 有什麼分別
1、sort對數組排序
格式如下:bool sort(array &$array[,int $sort_flags])
使用這個函數結束後單元將被從低到最高重新安排
返回boolean
$sort_flags這個參數是在php4加入進來的,可以用以下值改變排序的行為
排序類型標記:
SORT_REGULAR-正常比較單元(不改變類型)
SORT_NUMERIC-單元被作為數字來比較
SORT_STRING-單元被作為字元串來比較
SORT_LOCALE_STRING-根據當前的區域(locale)設置來把單元當作字元串比較.php4.4.0和5.0.2新加。在
PHP6之前,使用了系統的區域設置,可以用setlocale()來改變。自php6起,必須用i18n_loc_set_default()函數
舉例說明sort 的用法
$array = array('23','96','12','50','3');
sort($array);
foreach($array as $key=>$val){
echo "array[".$key."]=".$val."/n";
}
2、ksort-對數組按照鍵名排序
格式如下:bool ksort(array &$array[,int $sort_flags])
對數組按照鍵名排序,保留鍵名到數據的關聯。
返回boolean
$sort_flags參數的用法跟sort一樣
舉例說明ksort的用法
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
foreach($fruits as $key=>$val){
echo "$key = $val/n";
}
output:
a = orange
b = banana
c = apple
d = lemon
3、asort-對數組進行排序並保持索引關系
格式如下:bool asort(array &$array[,int $sort_flags])
本函數對數組進行排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序
返回boolean值
$sort_flags參數的用法跟sort一樣
舉例說明ksort的用法
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
foreach($fruits as $key=>$val){
echo "$key = $val/n";
}
output:
c = apple
b = banana
d = lemon
a = orange
希望能幫到樓主 給個點贊吧