PHP根据某字段对高维数组排序

可以利用array_multisort()函数.
假设有一高维数组$arr, $arr的各元素也是数组,且都有键"key".
如果按照各数组的key进行升序排序,可以如下操作:
foreach( $arr as $data ){
$arr_keys[] = $data['key'];
}
//将各子数组的key键作为一个单独的数组
array_multisort($arr_keys,SORT_ASC,$arr);
//按照$arr_keys对$arr进行升序排序。

如果采用降序排序,需改为SORT_DESC.

    发表于2022-01-17

PHP读取MySQL某一列求和/个数

如果要获取数据表table中val1这一列的各行之和,以及行的个数,可以采用以下sql语句:
$sql = "SELECT SUM(`val1`) AS val_sum , COUNT( * ) AS cnt FROM table";
在mysqli_fetch_array时,只需读取第一行的'val_sum'和'cnt'键即可。上述sql语句后面还可添加where条件。

    发表于2022-01-16

PHP保留小数点后n位

使用round( val , n )函数,val是要处理的小数,n是要保留的小数位数,最后一位采取四舍五入。如果需要采取截断的方法,可以结合向下取整函数floor()处理。
示例:
$num = 3.1415
echo round($num,2);
#将得到3.14

    发表于2022-01-14

PHP获取指定时间差的日期

只需在date函数中加入时间戳函数即可,即:date( format , timestamp)。例:

date("Y-m-d" , strtotime(" -1 day") //返回昨天
date("Y-m-d" , strtotime(" +1 day " ) //返回明天
date("Y-m-d" , strtotime(" next Monday ") //下个星期一

    发表于2021-09-09

PHP计算两个日期的差

首先用date_create()创建两个日期对象:如
$day1 = date_create("2021-09-01"); //指定日期
$day2 = date_create( date("Y-m-d") ); //当前日期

然后用date_diff()计算两个日期的差值,返回一个“日期差”对象:
$diff = date_diff( $day1 , $day2);

最后格式化输出日期相差的天数:如
echo $diff->format("%R%a days"); //%R是符号,%a是天数

    发表于2021-09-09

PHP实现单页面切换两套CSS

在html页面中,若要引入外部CSS文件,只需添加一行:

<link rel="stylesheet" type="text/css" href="/My_CSS.css">

如果想两套CSS样式能够切换使用,可以用纯JS实现,但一般比较繁琐。事实上,如果把html的后缀改为.php,然后配合php的$_SESSION变量,根据当前用户选择的模版echo对应的CSS文件,将会变的非常简单。示例代码如下:

<?php
session_start();
if(!isset($_SESSION['key'])){
    $_SESSION['key']='A';
}
if($_SESSION['key'] == 'A'){
    echo "<link rel='stylesheet' type='text/css' href='/A.css'>";
}else{
    echo "<link rel='stylesheet' type='text/css' href='/B.css'>";
}
?>

然后再用$_SESSION['value']调整用户选择的CSS模版即可。本方法可应用于实现网页的深色模式/浅色模式切换。

    发表于2021-08-14

PHP实现页面跳转

一般用法:

header("Location: 目标url");

设置时间跳转:

header("refresh:3;url=目标url")

但两种方法都只能实现在本页面跳转。如果要在_blank中打开新页面,还是使用JS函数比较方便。

    发表于2021-08-12