php 参数按ascii排序,取其非空值累加
时间: 2023-08-04 17:13:49 浏览: 42
这是一个常见的签名算法,通常用于 API 的鉴权。具体步骤如下:
1. 将所有参数按照字母顺序排序,得到参数名的字典序列。
2. 将排序后的参数名和参数值拼接成一个字符串,每个参数之间用"="连接,每个键值对之间用"&"连接。
3. 对拼接后的字符串进行非空值累加,得到签名结果。
例如,有以下参数:
```
array(
'foo' => 'bar',
'baz' => '',
'abc' => 'def',
'xyz' => '123'
);
```
按照字母顺序排序后得到:
```
array(
'abc' => 'def',
'foo' => 'bar',
'baz' => '',
'xyz' => '123'
);
```
将键值对拼接成字符串:
```
abc=def&baz=&foo=bar&xyz=123
```
进行非空值累加得到签名结果:
```
abcdefbar123
```
注意:如果参数值中包含特殊字符,需要进行 URL 编码。
相关问题
php 参数按ascii排序,取其非空值累加代码示例
以下是一个简单的示例代码,展示如何对 PHP 参数按照 ASCII 排序并计算其非空值的总和:
```php
<?php
// 假设这是你从前端接收到的参数数组
$params = array(
'name' => 'John Doe',
'age' => 30,
'gender' => '',
'email' => 'johndoe@example.com'
);
// 按 ASCII 字符串排序参数数组
ksort($params);
// 初始化累加器
$total = 0;
// 遍历参数数组并计算其非空值的总和
foreach ($params as $key => $value) {
if (!empty($value)) {
// 如果该参数的值非空,则将其转换为 ASCII 码并累加到总和中
$total += ord($value);
}
}
// 输出结果
echo "Total sum: $total";
?>
```
在上述示例代码中,我们首先使用 `ksort()` 函数按 ASCII 字符串对参数数组进行排序。然后,我们初始化一个累加器 `$total`,并遍历参数数组。对于每个参数,我们检查其值是否为空。如果值非空,则将其转换为 ASCII 码并将其添加到累加器 `$total` 中。最后,我们输出累加器的总和作为结果。
mysql 把空值放到最后面在对非空值排序
可以使用 MySQL 的 `ORDER BY` 子句来对非空值进行排序,并将空值放到最后面。具体的做法是在 `ORDER BY` 子句中使用 `IS NULL` 和 `DESC` 关键字,如下所示:
```
SELECT *
FROM my_table
ORDER BY my_column IS NULL, my_column DESC;
```
这将首先按照 `my_column` 是否为 NULL 进行升序排序,即将 NULL 值放到最后面;然后再按照 `my_column` 的值进行降序排序,即将非空值按照降序排列。