php 的小细节

switch 执行易忽略的地方
$a=0;
switch($a){
    case 1:
        echo 44;
        break;
    case 0:
    case 2:
        echo 66;
        break;
    case 3:
        echo 88;
        break;
    default:
        echo 77;
}
正常情况下,会执行case为2的部分。

引用传递的好处

在函数中,按值传递,其实就是对变量制作一个副本,函数内部对变量的修改不会影响到函数外部。而按引用传递不仅可以在函数内部可以改变变量的值,而且在需要传递数据比较大的场景时,不需要构建一份数据的副本,可以提高性能。

浏览器缓存

  为了提高web站点的响应速度,浏览器一般有缓存机制。在实际的网页中,一般会对视频和静态资源进行缓存。而作为程序员,了解浏览器缓存机制可以对网站开发起到一定的作用。

1、缓存控制

  首先我们可以通过一些请求头对浏览器缓存进行控制。

  cache-control: no-store  请求和响应都禁止被缓存must-revalidate 需要进行缓存验证

  private:客户端可以缓存
  public: 客户端和代理服务器都可缓存
  max-age=xxx: 缓存的内容将在 xxx 秒后失效

Cache-Control: no-cache  
如下头部定义,此方式下,每次有请求发出时,缓存会将此请求发到服务器(译者注:该请求应该会带有与本地缓存
相关的验证字段),服务器端会验证请求中所描述的缓存是否过期,若未过期(注:实际就是返回304),则缓存才
使用本地缓存副本。
2、缓存验证

用户点击刷新按钮时会开始缓存验证。如果缓存的响应头信息里含有"Cache-control: must-revalidate”的定义,在浏览的过程中也会触发缓存验证。另外,在浏览器偏好设置里设置Advanced->Cache为强制验证缓存也能达到相同的效果。

进行缓存验证是通过last-Modified / if-Modified-Since  和 ETag / If-None-Match   进行的。

一般情况下浏览器第一次进行请求时候,服务器正常响应,返回给浏览器last-Modified 响应头和响应内容。浏览器第二次进行请求时,会带上if-Modified-Since ,它的值与服务器返回的last-Modified的值一样,服务器接收到这个值以后 会与文件的最后修改时间进行对比,如果文件的最后修改时间大于if-Modified-Since,服务器就会返回最新的文件内容,浏览器就不会使用缓存。相反,浏览器就会使用缓存文件,服务器状态码为304。ETag / If-None-Match 的原理与上述是一样的。

一、多维数组的排序

在以前面试的时候,笔试的时候总会碰到多维数组的排序问题,而在数据库的查询结果虽然也是多维数组,但是可以通过数据库的order进行排序,所以对多维数组排序没有研究。

其实是比较简单的。主要借助于PHP的usort、uasort等函数。如下:

$arr=[
    ['key1'=>940,'key2'=>'bash'],
    ['key1'=>9140,'key2'=>'this'],
    ['key1'=>9240,'key2'=>'that'],
    ['key1'=>40,'key2'=>'fish']
];
//根据数字排序
uasort($arr,'asc_number_sort');
//根据字符排序
uasort($arr,'str_sort');
dump($arr);

function asc_number_sort($x,$y){
    if($x['key1'] < $y['key1']){
        return -1;
    }elseif ($x['key1'] == $y['key1']){
        return 0;
    }else{
        return 1;
    }
}
function str_sort($x,$y){
   return  strcmp($x['key2'],$y['key2']);
}

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值