---
<br>
#### **1. php如何校验IP地址**
filter_var() 函数
通过指定的过滤器过滤一个变量。如果成功,则返回被过滤的数据。如果失败,则返回false。
FILTER_VALIDATE_IP过滤器
过滤器把值作为ip地址来验证。
```
$ip = "192.168.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IP is not valid";
} else {
echo "IP is valid";
}
```
注:过滤器也可以校验邮箱,url,正则,布尔选项,字符,去除标签等。<a href="https://www.runoob.com/php/php-ref-filter.html">参考链接</a>
<br>
#### **2. 计算两个地址的相对路径**
```
$a = '/a/b/c/d/a.php';
$b = '/a/b/1/2/b.php';
```
```
$arr_a = explode('/', $a);
$arr_b = explode('/', $b);
$arr_diff = array_diff_assoc($arr_a, $arr_b);
//array_diff_assoc()用于获取A数组与B数组之间元素的差集,Key和Value都不相同视为不同元素,此处返回在A数组中且与B数组不相同的元素
$count = count($arr_diff);
$path = '';
for($i=0; $i<$count-1; $i++){
$path .= '../';
}
$path .= implode('/', $arr_diff);
//implode()用于使用指定字符串连接数组元素,此处返回用'/'连接数组元素后的字符串
```
<br>
#### **3. 获取相邻两个值相同的个数**
```
$key = 0;
$a = [];
$arr = [1,1,1,0,1,1,0,1,1,1,1,1,1,1,1];
foreach($arr as $k =>$v) {
if($v == 1) {
$key++;
}
if($v == 0) {
array_push($a, $key);
$key = 0;
}
}
$pop = array_pop($arr);
if ($pop == 1) {
array_push($a, $key);
}
print_r($a);
```
<br>
#### **4. php中的自动加载**
PHP 5.2版本更新了自动加载需要的一个魔术方法 __autoload()
自动加载的原理,就是在我们 new 一个类的时候,php 系统如果找不到你这个类,就会去自动调用本文件中的 __autoload() 方法
项目中仅能有一个这样的 __autoload() 函数
spl_autoload_register() 需要不同的自动加载来加载不同路径的文件
<a href="https://www.cnblogs.com/cqingt/p/8080708.html">参考链接</a>
<br>
#### **5. 生成随机数**
```
function random($length, $numeric = 0) {
PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand();
$seed = base_convert(md5(print_r($_SERVER, 1) . microtime()), 16, $numeric ? 10 : 35);
$seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
$hash = '';
$max = strlen($seed) - 1;
for ($i = 0; $i < $length; $i++) {
$hash .= $seed[mt_rand(0, $max)];
}
return $hash;
}
```
<br>
#### **5. 冒泡排序**
其它排序参考链接:<a href="https://www.runoob.com/w3cnote/ten-sorting-algorithm.html">runoob 排序算法</a>
```
$arr = [36, 26, 8, 21, 6, 23, 1, 3, 16];
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
for ($k = $i + 1; $k < $count; $k++) { // $arr[$i] 和 $arr[$k] 是相邻的两个值
if ($arr[$i] > $arr[$k]) { // 前者大于后者,调换位置。 如果想要按照从大到小进行排序,改为 $arr[$i] < $arr[$k]
$temp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $temp;
}
}
}
print_r($arr);
```
<br>
#### **5. 逻辑推演,根据5个已知条件,推断出正确密码**
<img src="https://blog-static.cnblogs.com/files/linsonga/%E6%B1%82%E5%AF%86%E7%A0%81.ico" style="width:400px">
<br>
#### **5. 逻辑推演,根据5个已知条件,推断出正确密码**
网友评论