[TOC]
## 一些案例代码
`dd()`函数
~~~
function dd($params)
{
echo "<pre>";
print_r($params);
echo "</pre>";
}
~~~
~~~
<?php
/**
* Created By basic
* Author: Virus
* Date: 2020/5/24
* Time: 18:02
*/
require 'func.php';
$str1 = 'yabadabadoo';
$str2 = 'yaba';
if (strpos($str1, $str2) !== false) {
echo $str1.'包含'.$str2."\n";
} else {
echo $str1.'不包含'.$str2.'\n';
}
$x = true and false;
var_dump($x);
dd($_SERVER['HTTP_USER_AGENT']);
echo function_exists('print');
echo false; // 空
echo "<hr>";
$a = true;
echo gettype($a); // 输出该变量的类型
echo is_string($a); // 先判断是否是字符串,不是 => false ,echo false; 结果为空
echo "<hr>";
$_1 = 12;
$_2 = 012; // 八进制的12
$_3 = 0x12; // 16进制的12
// 12 10 18 输出是都会转成十进制进行输出
echo $_1."\t", $_2."\t", $_3;
echo "<hr>";
/*
进制转换
12
00010010
0 => 0
16 + 2 = 18
*/
// 字符串里面前面+时,取第一个数
echo 1 + 2 + "3 + 4 + 5"; // 6
echo "<hr>";
dd(chr(65) == 'A'); // 1 true
echo ord('a'); // 97
echo "<hr>";
// 如果说有一个没有数组下标,那么它的下标就是它前面的下标中最大值+1
$arr1 = [1 => 5, 5 => 8, 22, 2 => '8', 81];
/**
* 上述数组结构
* Array
* (
* [1] => 5
* [5] => 8
* [6] => 22
* [2] => 8
* [7] => 81
* )
*/
dd($arr1);
echo "<hr>";
echo 1 >> 0; // 001 => 1 往右移1位
echo 2 >> 1; // 010 => 001 => 1 往右移1位
echo 3 << 2; // 011 => 01100 => 1100 => 12 往左移动了2位
echo "<hr>";
// 当心面试题中第二个表达式没有美元符,则i永远为0,是死循环
for ($i = 0; $i < 10; $i++) {
print $i;
}
echo "<hr>";
function change()
{
static $i = 0;
$i++;
return $i;
}
print change(); // 1
print change(); // 2
echo "<hr>";
// heredoc
$foo = 'test';
$bar = <<<EOT
$foo bar
EOT;
echo $bar; // test bar
$array = ['1', '1'];
foreach ($array as $k => $v) {
$v = 2; // 不会改变数组
// $array[$k] = 2; 会改变数组
}
dd($array);
~~~
## `crontab`定时任务语法
> 分 时 日 月 周 星期 执行的程序
>
> 案例: 一个备份程序`mybackup`,需要在周一到周五下午1点和晚上8点运行,命令如下:
~~~
0 13,20 * * 1,2,3,4,5 mybackup
// 或者
0 13,20 * * 1-5 mybackup
// 逗号是并且,-,是从什么到什么
~~~
## 字符串转化为数组的方法
`str_split`、`explode`、`preg_split`
> 正则分割
~~~
$str = '2020-07_02';
// 正则分割
$str_arr = preg_split('/-|_/', $str);
dd($str_arr);
~~~
> `str_split`按长度分割
~~~
$str3 = '123456789';
$str3_arr = str_split($str3, 3);
dd($str3_arr);
/*
* 格式如下
Array
(
[0] => 123
[1] => 456
[2] => 789
)
*/
~~~
> `explode`按照具体的某个东西进行分割
~~~
$str4 = '1,2,3,4,5,6,7,8,9';
$str4_arr = explode(",", $str4);
dd($str4_arr);
~~~
~~~
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
)
~~~
## 字符串替换函数
`str_replace`、`preg_replace`
~~~
$str5 = 'linux is very much and php';
// php is very much and php
echo str_replace('linux', 'php', $str5);
// js is very much and js
echo preg_replace('/linux|php/', 'js', $str5);
~~~
## 字符串查找
`preg_mathc()`:正则匹配
`preg_match_all()`:正则匹配多个
`strpos()`: 第一个出现的位置
`strrpos()`:最后一个出现的位置
> 案例:将字符串`08/26/2003`替换为`2003-08-26`
~~~
$str6 = '08/26/2003';
$pattern = '/(\d+)\/(\d+)\/(\d+)/';
$rep = '$3-$1-$2';
$str6 = preg_replace($pattern, $rep, $str6);
dd($str6);
~~~
## SQL语句
案例1:从表`login`中选出`name`字段包含`admin`的前10条结果所有信息的sql语句
~~~
select * from login where name like "%admin%" limit 10;
~~~
**左连接** `left...join..on`
> 左连接是以左边的表为主导,先输出左边的表的所有数据,右边匹配输出 ,不匹配的为`null`
**右连接** `right...join...on`
> 右连接是以右边的表为主导,先输出右边的表的所有数据,左边匹配输出 ,不匹配的为`null`
**内连接** `inner...join...on`
> 内连接必须同时符合左右表条件的内容才会输出,相等于普通多表查询
**索引**
> 索引可以极大的提高表的查询速度,是数据库中最为重要的优化手段,索引最主要的作用就是降低扫描行数,常用索引分为三种:主键索引、唯一索引和普通索引
## 高效的从一个标准的`url`里取出文件的扩展名
~~~
$url = "http:www.lanp.com/web/index.php?id=10";
$arr2 = parse_url($url);
$arr3 = pathinfo($arr2['path']);
$ext = $arr2['extension'];
~~~
**$arr2**
~~~
Array
(
[scheme] => http
[path] => www.lanp.com/web/index.php
[query] => id=10
)
~~~
## 描述下大流量高并发网站的解决方案
1. 服务器负载均衡(多增加几台服务器同时对客户提供网站服务)
2. `web`服务器用`nginx`替换`apache`(把其中的并发数调到最高)
3. 页面静态化
4. 数据缓存(`memcache,redis,tp文件缓存`)
5. 表索引
6. 数据库实现主从复制,读写分离
7. 减少客户在服务器上的连接断开时间
8. 代码优化
- PHP获取客户端浏览器信息和版本
- PHP获取客户端操作系统信息
- 无限级分类
- git使用
- 权限检测思路
- Vue学习
- 遇到的一些问题
- PHP的编码思维和技巧
- mysql复习
- tp5
- ThinkPHP5.x 公共函数
- TP5登录注册
- TP5使用模板继承
- ThinkPHP5.1 清除缓存
- thinkphp5实现安装程序
- 安全
- tp中实现跨域代码
- ThinkPHP5.1配合pjax实现菜单栏无刷新跳转
- 获取数据库版本和数据库大小
- 模型的基本CURD操作
- 商品spu
- 全局异常处理类
- ExceptionHandler
- BaseException
- PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
- 微信小程序
- wx:for
- tp6
- 分离的一些模块
- session开启
- Spring
- 依赖注入
- 数据结构
- 二叉树
- js获取地址栏变量
- PHP设计模式
- 面向对象
- PHP1
- PHP性能优化
- Java学习
- static关键字
- 多态
- 接口、阶乘
- 大佬给的面试题
- 访问量为5000万的博客系统设计
- PHP可变参数
- Nginx的配置案例
- 求数组中的最大值,并返回数组索引
- PHP面试方向
- PHP数组工具类ArrUtil
- 字符串工具类StrUtil
- PHP使用curl发送请求
- mysql
- PHP上传base64图片处理函数
- webstorm小程序常用配置
- 邮箱正则表达式
- leetcode mysql记录
- 函数库