一道小题--获取本月有多少天
$today = "2018-8-8"; echo date('t',strtotime($today));// t 为本月天数, 28-31之间 // date() 函数可以直接得出, 避免了 复杂的判断 闰年,几月 等如何减少-if---else----甚至-switch-的使用
需求: $str = '1,3,5'; // 变成 'abc,ghi,mno' $arr = [ [ 'id'=>1, 'name'=>'abc' ], [ 'id'=>2, 'name'=>'def' ], [ 'id'=>3, 'name'=>'ghi' ], [ 'id'=>4, 'name'=>'jkl' ], [ 'id'=>5, 'name'=>'mno' ], ]; 使用 if..else 或 switch 方法可以完成 现考虑不使用这两种方式作法: 思路: 把下面的 id 值作为键, name 值作为值, 重新构成一个数组 $arr2, 从 $str 中获取数字 如1, 使用 $arr2[‘1’] 来获取对应的 name php解法: // 1. 把当前 $arr 转成 目标数组 $arr2 $arr2 = []; foreach ($arr as $v) { $arr2[$v['id']] = $v['name']; } $str_to_arr = implode(',', $str);// [1,3,5] $str_to_arr = array_map(function(value){ return $arr2['value']; }) $str2 = join(',', $str_to_arr); JS 解法: js 只支持索引数组, 不支持关联数组, 但是 ES6 的 Map 对象支持任意的键或值 var str = '1,3,5'; var data = [ { id: 1, name: '中国' }, { id: 2, name: '美国' }, { id: 3, name: '日本' }, { id: 4, name: '韩国' }, { id: 5, name: '俄国' } ]; console.php-进程线程
进程与线程的概念: 进程是 一个时间段: CPU 上下文切换之间的程序运行时 线程是进程之中的多个程序段的运行时, 线程共享进程的地址空间 (知乎: 线程和进程的区别是什么?)[https://www.zhihu.com/question/25532384] php-fpm 是进程, 每个请求是单线程的 多个请求是并发(多线程)的Duck-Type-鸭子类型
Duck Typing is a [type system] used in dynamic languages. For example, Python, Perl, Ruby, PHP, Javascript, etc. where the type or the class of an object is less important than the method it defines. Using Duck Typing, we do not check types at all. Instead, we check for the presence of a given method or attribute. reference: geeksforgeeks 按上述来说, 鸭子类型是动态语言的特性, 在动态语言中, 类型并不重要, 重要的是类型(实例)的方法php-生成文件流,-不生成本地文件
$string = "I tried, honestly! 中文"; $stream = fopen('data://text/plain,' . $string,'r'); //file_put_contents('./a.txt', $stream); //echo stream_get_contents($stream); echo $stream; $string = 'Some bad-ass string'; $stream = fopen('php://memory','r+'); fwrite($stream, $string); rewind($stream); echo stream_get_contents($stream); 参考自: Creating streams from strings in PHP类的-static-及-self
使用 self:: 或者 CLASS 对当前类的静态引用,指向 定义当前方法所在的类. 使用 static 对当前类的静态引用,指向 使用当前方法所在的类. 参见php.net 后期静态绑定php-的-session-文件
由于 http 无状态性, 一般 MVC 可以使用session 用于存储用户信息. <?php session_start(); // 开启 session, 将会生成一个 session_id, 通过 http 响应头返回给浏览器, 浏览器存储到本地的 cookie 中, 下次 http 请示会自动携带给服务端; // 同时会在服务端生成一个文件 如 sess_2rh6hq44kjbtagri2r88dj16b1 (后面一串为 session_id), 当前会话(通过 id保持) 的数据, 会保存在该文件中, 如 session('name', 'test') session_unset(); // 注销当前会话下的 session 变量, 但不会删除当前 sess_xxxx... 文件, 而是清空文件里的内容(key: value)composer-version-constraint
Tilde ~2.1, means 2.1.0 <= version < 3.0.0 ~2.1.1, means 2.1.1 <= version < 2.2.0 Caret // - ^2.1, means 2.1.0 <= version < 3.0.0 ^2.1.1, means 2.1.0 <= version < 3.0.0 Wildcard 2.1.*, means 2.1.0 <= version < 2.2.0 reference: composerarray_filter-过滤数组中值为空的元素
array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array 通过回调函数返回 true 返回过滤数组中的单元, 组成新数组并最终返回 如果, callable 为空, 则默认过滤数组中等值为 false 的单元(如 null, ‘’, ’ ‘, 0) 等php-二维数据排序
<?php $arr = [ [ 'aaifdddk' => 3, 'name' => 'test8', ], [ 'aaifdddk' => 5, 'name' => 'test8', ], [ 'aaifdddk' => 2, 'name' => 'test8', ], [ 'aaifdddk' => 4, 'name' => 'test8', ], [ 'aaifdddk' => 1, 'name' => 'test8', ], ]; //usort($arr,function ($a,$b){ // return $a['id'] > $b['id'] ? 1 : -1; //}); array_multisort($arr); var_dump($arr);
Recent Posts
Tags
- apache 4
- axios 1
- benchmark 1
- c 1
- canvas 1
- centos 3
- channel 1
- crontab 1
- css 2
- docker 4
- fail2ban 1
- frp 1
- gin 1
- github 1
- go 26
- goaccess 1
- goroutine 1
- http 1
- https 1
- jetbrains 1
- jquery 1
- js 2
- linux 20
- mermaid 1
- mysql 10
- nginx 3
- node 1
- php 43
- prisma 1
- react 8
- server 1
- ssh 2
- tarojs 1
- tcp/ip 1
- token 1
- ubuntu 1
- ufw 1
- unit-test 1
- vmware 1
- vscode 1
- vue 12
- yum 1
- 域名 3
- 安全 2
- 微信 3
- 算法 3