PHP 浮点数高精度运算

关于 PHP 浮点数运算,特别是金融行业、电子商务订单管理、数据报表等相关业务,利用浮点数进行加减乘除时,稍不留神运算结果就会出现偏差,轻则损失几十万,重则会有信誉损失,甚至吃上官司,我们一定要引起高度重视! 

分类至 PHP
0条评论

修改 Laravel 模型 toArray 或 toJson 时的日期格式

默认情况下,Eloquent 会将 created_at 和 updated_at 字段转换为 Carbon 实例。

在调用 toArray 或 toJson 方法时,Carbon 会自动转换成类似这样的格式 2021-12-26T13:20:35.000000Z ,这个叫 ISO-8601 时间格式。如果转换成我们常见的 Y-m-d H:i:s 格式,应该是 2021-12-26 21:20:35

要想实现此功能,在模型中覆写 serializeDate 方法即可:

use DateTimeInterface;

protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('Y-m-d H:i:s');
}
分类至 PHP
1条评论

PHP 的 uniqid 函数产生的 id 真的是唯一的么?

最近使用到了 uniqid,就产生了疑问?uniqid 生成的 id 由什么组成?真的是唯一的么?什么情况下会产生冲突? 从文档中看到 uniqid 函数有两个参数。 uniqid 的结构 看源码: PHP_FUNCTION(uniqid) { ... gettimeofday((struct timeval *) tv, (struct timezone *) NULL...

分类至 PHP
0条评论

php 时区对 strtotime 函数的影响

来看两段代码

代码1(时区设为巴黎):...

代码2(时区设为上海):...

已知巴黎时区比上海时区慢7个小时,对比两段代码的执行结果,两个 $time1 格式化后显示没有问题,$time2 格式化后显示也是差7个小时。然而,同样是 +30 day,两个 $time2 的时间戳却不同,相差了3600秒,也就是1小时。

分类至 PHP
0条评论

mb_substr 编码问题

PHP 中 mb_* 系列函数用于处理多字节字符串,平时比较常用就是字符串截取 mb_substr,可以有效规避中文字符串截取的乱码问题。

mb_substr 的格式为:

mb_substr( string $str, int $start[, int $length = NULL[, string $encoding = mb_internal_encoding()]] ) : string

第4个参数 encoding 为字符编码。如果省略,则使用内部字符编码。

那么,这个“内部字符编码”是什么呢?我们可以通过函数 mb_internal_encoding 设置和获取...

分类至 PHP
1条评论

php 中 http_build_query 函数对空值的处理

在对接 API 接口的时候,我们常常使用 http_build_query 函数来拼接参数。但是,这个函数会对空值做过滤和转换,不小心的话,很容易踩坑。

下面演示执行:

$args = [
    'key1' => 0,
    'key2' => '',
    'key3' => '0',
    'key4' => [],
    'key5' => null,
    'key6' => false,
    'key7' => true
];
$str = http_build_query($args);
echo $str;

输出结果为...

分类至 PHP
0条评论

php.ini 配置项 max_input_vars

从 PHP 5.3.9 起,php.ini 中增加了一个配置项 max_input_vars,默认值为1000。

手册中 max_input_vars 释义如下:

接受多少 输入的变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量)指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的输入变量,将会导致 E_WARNING 的产生,更多的输入变量将会从请求中截断。 

分类至 PHP
0条评论

Lumen 框架前后台认证(多用户认证)

Lumen 框架默认只有一种角色认证(单表),但是通常我们会把后台管理员与前台用户设计成两个不同的表,这个时候就得改造一下代码了。

假设后台管理员和前台用户对应 Model 分别为 App\Models\AdminApp\Models\User,作如下修改...

分类至 PHP
0条评论