超级赞


  • 首页

  • 关于

  • 标签

  • 归档

周一摸鱼

发表于 2018-12-03 | 分类于 PHP |

关于上班

小公司上班,一个字“闲”,我的大好年华,居然是这样虚度的;哈哈哈哈哈,与其这样摸鱼,还不如偷偷自我学习!

函数的预加载

代码的执行过程,词法分析——语法分析——编译——加载编译的代码——执行,在执行代码之前,函数已经加载到内存中了。

1
2
3
4
fun();
function fun(){
echo '测试一下';
}

上面例子中,在函数定义时、保存时以及预先加载了;

与函数有关的魔术常量

FUNCTION用来获取当前的函数名。

1
2
3
4
function fun(){
echo __FUNCTION__;//获取当前函数名字
}
fun();

包含文件

在网站中有相同的banner,版权等等页面,我们可以将相同的页面做成包含文件,在展示的页面中包含即可。

注意:包含文件相当于将文件的内容复制到页面中,如果包含文件有
页面结构(<html></html>),包含后,页面中就不止一个页面结构了。这与W3C定义的规范不符合,所以在包含文件中不能出现页面的结构。

包含文件语法

  1. include():可以包含多次
  2. require():可以包含多次
  3. include_once():只能包含一次,include遇到错误继续执行。
  4. require_once():只能包含一次,require遇到错误停止执行。

    终止脚本执行

    exit()和die()

    exit的die的别名,终止脚本执行,终止后可以输出一个字符串。

    return

    终止当前页面的执行

    作用
  5. 终止函数执行
  6. 从函数中返回值
  7. 终止当前脚本的执行
  8. 用来做配置文件

    延迟脚本执行

    语法:sleep(秒)
    1
    2
    sleep(3); //延时3秒
    echo 'test';

foreach数组指针

  1. 指针其实也是一个变量,用来保存某个元素的地址。指针可以移动。
  2. 默认情况下,打开一个数组,指针会指向数组的第一个元素
    语法结构
    1
    2
    3
    foreach(数组 as 键=>值){
    //循环体
    }

流程图

foreach流程图
foreach流程图

foreach是循环,break和continue也适用于foreach循环

1
2
3
4
5
6
7
8
9
10
<?php 
$stu=array('tom','berry','ketty','rose','jiack','tony');
foreach($stu as $key=>$val){
if($key%2==0)
continue;
if($key==5)
break;
echo $key,'-',$val,'<br>';
}
?>

输出为:

1-berry

3-rose

foreach值变量支持传地址

  1. 默认是传值
    1
    2
    3
    4
    5
    6
    $stu=array('tom','berry','ketty');
    foreach($stu as $key=>$val){
    $val.=$val;
    echo $val,'<br>';
    }
    var_dump($stu);

输出结果为:

tomtom

berryberry

kettyketty

array(3){ [0]=>string(3) “tom”[1]=>string(5) “berry” [2]=>string(5) “ketty” [3]=>string(5)}

  1. 将数组元素地址付给变量
    1
    2
    3
    4
    5
    6
    $stu=array('tom','berry','ketty');
    foreach($stu as $key=>&$val){
    $val.=$val;
    echo $val,'<br>';
    }
    var_dump($stu);

输出结果为:

tomtom

berryberry

kettyketty

array(3){ [0]=>string(6) “tomtom”[1]=>string(10) “berryberry” [2]=>string(10) “kettyketty” [3]=>string(10)}

键变量不支持传地址。

foreach循环变量数组的时候,遍历的是数组的拷贝

1
2
3
4
5
6
$stu=array('tom','berry','ketty');
foreach($stu as $key=>$val){
$stu[$key]='你好'.$val;
$stu[]='李白';
}
print_r($stu);

输出结果:

Array([0]=>你好tom [1]=>你好berry [2]=>你好ketty[3]=>李白[4]=>李白[5]=>李白)

数组指针的操作

  1. key():从关联数组中取得键名,没有取到返回NULL。
  2. current():返回数组中的当前单元
  3. next():将数组中的内部指针向前移动一位
  4. prev():将数组的内部指针倒回一位
  5. reset():将数组的内部指针指向第一个单元
  6. end():将数组的内部指针指向最后一个单元


例题:将数组的元素从后往前取

例题:将数组的元素从后往前取

如果一个数组连续输出两次,必须要将指针复位。

each()

  1. 返回数组中当前的键/值对并将数组指针向前移动一步,如果内部指针穿越了数组的末尾返回false。
  2. 键值对被返回4个单元,其中包含索引数组和关联数组,下标是key和0的是键,下标是1和value的是值。
  3. each()=key()+current()+next()
  4. 如果第二次再遍历,必须通过reset()复位指针。

each

例题:通过while+each遍历数组

while+each

list()

把索引数组中的值赋给一些变量
注意:只能是索引数组,不能是关联数组

转载声明

本博客绝大部分文章均来源于互联网,通过本人收集、整理、实践从而形成总结;转载时请注明原链接即可。

特别声明

本人在此发布博文(包括但不限于汉字、拼音、阿拉伯字母 、图片、影像,以及前述之各种任意组合等等)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人观点。如需要详查请直接与键盘发明者及生产厂商法人代表联系。

PHP-匿名函数的 use()

发表于 2018-11-28 | 分类于 PHP |

匿名函数的 use()

匿名函数的作用域和普通函数是一样的,函数内部不能访问函数外部的变量,匿名函数中的use()可以将匿名函数外的变量引入到匿名函数内部。

1
2
3
4
5
6
7
<?php
$num=10;
$fun=function() use ($num){
echo $num;
};
$fun();
?>

输出结果为:10

结论: use()引入和匿名函数所在同一作用域的变量

use()的传值和传址

默认情况下,use()是传值的。

1
2
3
4
5
6
7
8
9
<?php
$num=20;
$fun=function() use($num){
$num++;
echo $num,'<br>';
};
$fun();
echo $num;
?>

上述”传值”例子 输出结果为:21 20

1
2
3
4
5
6
7
8
9
<?php
$num=20;
$fun=function() use(&$num){
$num++;
echo $num,'<br>';
};
$fun();
echo $num;
?>

上述”传地址”例子 输出结果为:21 21

匿名函数的作用

适合建立一个临时函数,用完以后可以销毁,如果一个函数只需要执行一次就可以声明成匿名函数。

1
2
3
4
5
6
7
8
9
10
function myfun(){
$num=20;
$GLOBALS['fun']=function() use($num){
$num++;
echo $num,'<br>';
};
}
myfun();
$fun();//将函数保存在全局变量中科院在外部直接调用。
unset($fun) //销毁函数

输出结果为:21


递归

语法:函数的内部自己调用自己

要素:

  1. 递归点:递归调用的地方。
  2. 递归出口:递归调用结束。

    案例一:使用递归从1加到100
    1
    2
    3
    4
    5
    6
    function fun($num){
    if($num==1)
    return 1;//递归出口
    return $num+fun($num-1);// 递归点
    }
    echo fun(100);

案例二:递归:前10个斐波那契数列

1
2
3
4
5
6
7
8
function cal($n){
if($n==1 || $ n==2)
return 1;
return cal($n-1)+cal($n-2);
}
//前10个斐波那契数列
for($i=1;$i<10;$i++)
echo cal($i),'&nbsp';

在递归调用的时候,有时候可能PHP执行的时间不够用,可以通过php.ini配置文件更改php最大执行时间。

函数的代理调用

不直接通过函数名去调用函数,而是通过PHP的内置函数call_user_func_array()来调用函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function concat() {
$array=func_get_args();
if(empty($array)){
echo '您没有传递参数<br>';
return;
}
$str='';
for($i=0,$n=count($array); $i<$n; $i++) {
$str.=$array[$i];
}
echo $str;
}
//concat(1,2,3);
if(isset($_POST['button'])) {
$str=$_POST['str'];
$array=explode(',',$str);
call_user_func_array('concat',$array); //函数的代理调用
}
?>
<form method="post" action="">
请输入字符,用逗号分隔:<input type="text" name="str">
<input type="submit" name="button" value="连接字符串">
</form>

转载声明

本博客绝大部分文章均来源于互联网,通过本人收集、整理、实践从而形成总结;转载时请注明原链接即可。

特别声明

本人在此发布博文(包括但不限于汉字、拼音、阿拉伯字母 、图片、影像,以及前述之各种任意组合等等)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人观点。如需要详查请直接与键盘发明者及生产厂商法人代表联系。

运用Virmach搭建VPS

发表于 2018-11-16 | 分类于 科学上网 |

事先安装

安装Xshell

一款安全终端模拟软件,可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
百度云盘下载:提取码:9s7m

本地安装shadowsocks管理软件

一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种传输包。
百度云盘下载:提取码:ci0y

Virmach服务器选择

本文只作教学使用,并不是一定推荐购买、购买时请根据自身需求而定
服务器购买地址:Virmach
选择购买$1.00 USD Monthly 的服务器(类型:OpenVZ Linux VPS)

  1. 1.服务器地址选择Select Location : Los Angeles,CA
    2.服务器系统选择Operating System : Ubuntu 14.04 x64
    3.勾选”Limited Support Agreement”—–>>> Check out

填写你的个人信息

  1. 1.注意点:这里所填写的信息只是登陆该服务器网站的个人信息
    2.在选择使用 支付宝 支付时,应该是处于 非VPN 状态下;否则网站会认为该次交易是非真实的

配置服务器

  1. 1.在购买完成后,点击Services进入到服务器中
    2.修改root密码的同时记录下你的IP (Main IP Address)
    3.打开事先安装好的 “Xshell” ;新建会话属性—> 填写服务器IP—> 点击确定后—> 填写SSH用户名(root)—> 填写SSH用户密码(root 密码)
    4.安装bbr 加速 ;用于VPS网络资源加速

    1
    wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

    5.选择”安装 BBR/bbr魔改版内核”后重启服务器
    6.关闭Xshell后,重新打开;再次输入上述代码 “使用BBR加速”

转载声明

本博客绝大部分文章均来源于互联网,通过本人收集、整理、实践从而形成总结;转载时请注明原链接即可。

特别声明

本人在此发布博文(包括但不限于汉字、拼音、阿拉伯字母 、图片、影像,以及前述之各种任意组合等等)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人观点。如需要详查请直接与键盘发明者及生产厂商法人代表联系。

个人博客|MarkDown语法

发表于 2018-11-08 | 分类于 搭建博客 |

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

####无序列表

  • 1
  • 2
  • 3
  • 4

####有序列表

  1. 1
  2. 2
  3. 3

这里是应用
要注意符号和文本间的空格

图片与连接

插入链接与图片的语法很像,区别在一个 ! 号
图片为: !
连接为:

Hello World

发表于 2018-11-08 | 分类于 搭建博客 |

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

Fr Zachary

Fr Zachary

反正闲着也是闲着,干嘛要谈恋爱呢

5 日志
3 分类
6 标签
GitHub segmentfault
© 2018 Fr Zachary
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4