Ubuntu 16.04.4 LTS 安装php7.2

因项目要使用到Laravel,但Laravel要求php >= 7.1.3

我的本地系统为 Ubuntu 16.04.4 LTS ,php版本为7.0

当前php7.2已经有稳定版本发布,所以计划直接升级到php7.2

因php7.2版本比较新,并未收录在ubuntu 16.04.4 LTS 默认的软件包里面

所以就需要添加PPA(Personal Package Archives)

以下是添加和安装的步骤:

参考文档  https://tecadmin.net/install-php-7-on-ubuntu/

PHP字符串函数substr的用法

substr是PHP语言的一个字符串截取函数,它的作用是返回字符串的一部分。在日常开发中会经常使用到。
它有三个参数,

第一个参数是要处理的原始字符串;

第二个参数是截取的起始位置,字符串中第一个字符位置是0,向后依次累加,如果从字符串结尾开始指定位置,最后一个位置是-1,如果要截取末尾的几个字符,通常设定负数比较方便;

第三个参数是可选的,指定了要截取的长度,如果没有指定,默认截取到结尾。如果指定负数意思是从start位置开始截取,并舍弃字符串末端字符数。

如果要处理的字符串是多字节编码,就需要知道每个字符所占的字节数,比如中文 每个汉字占3字节,在设定参数时就需要计算好,否则容易出现乱码。也可以使用mb_substr等扩展库支持的函数来处理。

PHP使用SPL内置迭代器递归遍历目录

PHP开发中经常有遍历目录的需求,使用PHP内置标准库SPL提供的迭代器,可以很方便地实现,下面视频演示如何使用SPL迭代器实现目录和文件的遍历。

在目录dir下面有多个目录和文件,并且目录还有子目录,使用SPL库的迭代器可以很方便的递归遍历每个文件。

代码:

参考:
http://php.net/manual/en/spl.iterators.php

PHP中constant用法举例

如果define定义的常量的名字在程序中是个变量,可以使用constant()函数来获取常量的值。

例如:

 

PHP函数set_exception_handler在各个版本中的差异

PHP函数set_exception_handler用来设置用户自定义的异常处理函数,

此函数的参数在PHP5和PHP7之间存在一些差异,

PHP7对传入 exception_handler 的参数从 Exception 改为 Throwable

这个错误存在于Codeigniter 3.06以前的版本。

参考资料:

http://stackoverflow.com/questions/36982769/codeigniter-ci-exceptionsshow-exception-error-after-updating-to-php-7

https://secure.php.net/manual/zh/language.exceptions.php

https://github.com/bcit-ci/CodeIgniter/issues/4137

PHP计算时间间隔

版本要求:

PHP 5 >= 5.2.0

此版本及之后 Datetime 类和相关函数作为PHP核心发布,无需额外安装。

 

PHP计算斐波那契数列

 

约瑟夫问题

约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。[1]
17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。
*问题分析与算法设计
约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方法。
题目中30个人围成一圈,因而启发我们用一个循环的链来表示,可以使用结构数组来构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该人是否被扔下海的标记,为1表示还在船上。从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。这样循环计数直到有15个人被扔下海为止。

使用PHP代码实现

 

设计模式单例示例【PHP】

 

PHP array_walk使用类方法

 

PHPMYADMIN JSON缺失问题

UBUNTU系统下面

phpmyadmin如果出现下面的问题

The json extension is missing. Please check your PHP configuration.

修改 /etc/php5/mods-available/json.ini

去掉priority=20前面的分号,然后service php5-fpm restart即可