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
希望能帮到楼主 给个点赞吧