[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記錄
- 函數庫