php
-
PHP中的日期比较函数date_diff详解,date_diff是否有正负之分
如果你仅仅是简单的对比,可以用两个时间戳相比较,除以86400就能得到天数只差,PHP的时间戳是以s为计量单位的,所以根据实际需要进行即可。 而你如果想要定义一个函数用于对比两个日期,则可以使用PHP的date_diff。 官方手册对于这个函数的说明地址是:https://www.php.net/manual/zh/function.date-diff.ph…
-
PHP中对运算数据保留两位小数,如是整数则补零(如0.00)的方法
通常来说,我们对保留两位小数有如下三种方法:
123456789101112$num = 10.4567;//第一种:利用round()对浮点数进行四舍五入echo round($num,2); //10.46//第二种:利用sprintf格式化字符串$format_num = sprintf("%.2f",$num);echo $format_num; //10.46//第三种:利用千位分组来格式化数字的函数number_format()echo number_format($num, 2); //10.46//或者如下echo number_format($num, 2, '.', ''); //10/46区别 第三种方法对于数据的二次运算就不是那么友好,所以我们将主要目标放在第一和第二种方法上。 第一种方法会对数据进行四舍五入,也就是上面代码形容的那样,但有个问题。 如果是10.1,他就只能显示10.1,并不会帮我们补全成10.10. 第二种方法不会…
-
thinkphp后端输出浮点数,前端无法计算,结果为NaN的情况分析
数据库约束了数据为decimal(10,2),根据thinkphp的特性,读取数据库是都会转为字符串,但奇怪的地方是,整个计算过程都毫无异常,组合成新数组时,出现了错误,错误如下: 整个数据的精度发生了变化,其实原因不难分析,无非就是计算机对浮点数精度无法把握而已,那么,到底是哪个环节让精度发生了变化呢? 约束新数组 从上面的情况可知,错误是在组合新数组时发…
-
php数组的一些技巧记录
日常开发过程中,经常会设计到数组的操作,无论是数据库查询还是数据的导入,难免都会使用到,这里将作自己在这过程中的所用所想做一个记录。 去重 比如我们在一组用户数据中,想知道一共有多少company_id,则如是操作:
123456789foreach ($data as $value) {//查看有没有重复项if (isset($res[$value['company_id']])) {//有:销毁unset($value['company_id']);} else {$res[$value['company_id']] = $value['company_id'];}};进一步处理,要去掉主键的话,则可以这样:[crayon-678f0b62244a…
-
PHP通过phpspreadsheet等途径导入Excel日期时的数据处理方法
比如,我们需要录入一个入职日期,在Excel中显示如下: 导入系统后,全部变为了4开头的几位数字,这是为什么呢? 原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的类,但我更推荐通过判断后再进行数据转换,方法如下:[crayon-678f0b622462…
-
PHP中使用switch如何判断null?
前端表单提交时,如果未定义或未填写,后端也没有定制,那么写入数据库,就是Null或者是数据库定时的预设值。 那么,在写逻辑的时候,如何用switch表达这个Null值呢? 逻辑代码如下:
123456789switch($fileInfo->cert_allowed){case 这里的NULL怎么表达?:print ("<script type=\"text/javascript\">");print ("var index = parent.layer.getFrameIndex(window.name);");print ("top.layer.msg('改文件未定义可下载人员!', {shade: 0.3});");print ("parent.layer.close(index);");print ("</script>");die;break;直接case Null? 不行 用‘Null’或者‘’呢? 也不行 那么如何判断? 用0 没错,如果写cas…
-
PHP中的二维数组怎么用foreach修改特定值或批量修改
之前我们已经说过怎么拼合从数据库中取出的数值并去重: PHP中数据库查询出来的二维数组去重方法 那么,我们任然有的需求是,修改指定key对应的value,或者批量修改某个字段的值,这又应该怎么做呢? 两种方式,一种是全部更改,另一种是改指定的值。 一、全部修改
123456789101112131415161718public function array_test(){// 修改 二维数组中的 name为 Getchar$users = array(array('name' => 'GetcharZp', 'age' => 19),array('name' => 'Mcx', 'age' => 18));foreach ($users as &$user) {$user['name'] = 'Getchar';}unset($user); // 销毁掉 user 引用print_r($users);}如上,整个二维数组中的name全部…
-
PHP中数据库查询出来的二维数组去重方法
有时候,我们需要合并多次查询结果来给前端呈现,这时就要合并二维数组。 二维数组去重,分两种情况,其一,是ID不重复,这种情况比较多,方法如下。 二维数组ID去重 1、定义方法
123456789101112131415161718public function remove_duplicates($arr, $key){$tmp_arr = array();foreach ($arr as $k => $v) {if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回trueunset($arr[$k]);} else {$tmp_arr[] = $v[$key];}}sort($arr);return $arr;}2、调用方法
123$list = array_merge($public,$appoint);$key = 'id';$list = $this->remove_duplicates($list , $key);二维数组内容去重 [crayon-67…
-
PHP数字前补0方法,月份个位数前面补全0的方法
比如我们只做表单是给定的是数字,123456789,以及10/11/12,则补全的方式有: 1、前端定义value补全 下拉选框或其他情形显示123456789,而value给定01/02/03/04/05/06/07/08/09,即可。 2、后端PHP处理
12$params = input();$params['month'] = sprintf("%02d", $params['month']);语法[crayon-678f0b62…
-
ThinkPHP如何从数据库中取出数据,复制遍历修改后重新插入数据库中
最近在做账单功能,需求是一键创建账单,创建时选择要复制数据的月份,即复制一份上月的数据稍作调整后作为本月或者任意月的数据。 这就需要从数据库中取出数据,修改后再插入数据库中,实际操作是发现一些问题,这里做一下总结。 一、取出数据 1、静态方法 静态方法取出的数据是对象,object,能做修改调整,但是重新插入数据库就会繁琐一些。 2、DB类 直接引用THIN…