企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
**一、PHP内置的的输出换行的常量,会根据操作系统的不同来输出** ***** ~~~ PHP_EOL ~~~ **二、php:list** ***** 定义和用法 list() 函数用于在一次操作中给一组变量赋值。 注释:该函数只用于数字索引的数组,且假定数字索引从 0 开始。 list() 函数用数组中的元素为一组变量赋值。 注意,与 array() 类似,list() 实际上是一种语言结构,不是函数。 ~~~ <?php $my_array = array("Dog","Cat","Horse"); list($a, , $c) = $my_array; echo "我在这里只用了 $a 和 $c 变量。"; ?> ~~~ **三、PHP basename() 函数** ***** ~~~ basename(path,suffix) ~~~ ~~~ <?php $path = "/testweb/home.php"; //显示带有文件扩展名的文件名 echo basename($path); //显示不带有文件扩展名的文件名 echo basename($path,".php"); ?> ~~~ 输出: ~~~ home.php home ~~~ **四、PHP:glob()** >语法 `glob(pattern,flags)` |参数|描述| |---|--| |file |必需。规定检索模式。| |size|可选。规定特殊的设定 <br/><strong>GLOB_MARK</strong> - 在每个返回的项目中加一个斜线<br/><strong>GLOB_NOSORT</strong> - 按照文件在目录中出现的原始顺序返回(不排序)<br/><strong>GLOB_NOCHECK</strong> -如果没有文件匹配则返回用于搜索的模式<br/><strong>GLOB_NOESCAPE</strong> - 反斜线不转义元字符<br/><strong>GLOB_BRACE</strong> - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'<br/><strong>GLOB_ONLYDIR</strong> - 仅返回与模式匹配的目录项<br/><strong>GLOB_ERR</strong>-停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误注释:<br/><strong>GLOB_ERR</strong> -是 PHP 5.1 添加的| >例子 1 ~~~ <?php print_r(glob("*.txt")); ?> ~~~ >输出类似: ~~~ Array ( [0] => target.txt [1] => source.txt [2] => test.txt [3] => test2.txt ) ~~~ >例子 2 ~~~ <?php print_r(glob("*.*")); ?> ~~~ >输出类似: ~~~ Array ( [0] => contacts.csv [1] => default.php [2] => target.txt [3] => source.txt [4] => tem1.tmp [5] => test.htm [6] => test.ini [7] => test.php [8] => test.txt [9] => test2.txt ) ~~~ **五、PHP 判断是否为 AJAX 请求** **** 先说前端使用 jQuery 时怎么区分: >jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest 在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取。(注意:中划线换成了下划线,不区分大小写)   ***由此,我们可以这样来判断是否为 ajax 请求:*** ~~~ // php 判断是否为 ajax 请求 http://www.cnblogs.com/sosoft/ if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ // ajax 请求的处理方式 }else{ // 正常请求的处理方式 }; ~~~ **2.给已经建好的表加上唯一性约束** ~~~ ALTER TABLE `t_user` ADD unique(`username`); ~~~ **获取所有require的文件** ***** ~~~ var_dump(get_required_files() ~~~ **六、ip相关** ~~~ PHP echo ip2long('192.168.1.38'); 输出:3232235814 MYSQL SELECT INET_ATON('192.168.1.38'); 输出:3232235814 ~~~ >两个函数返回的结果是一样的,都是A*256*256*256+B*256*256+C*256+D的算法 192*256*256*256+168*256*256+1*256+38 = 3 232 235 814 >反过来,从int转换为IP地址分别是php的long2ip()和mysql的INET_NTOA()。 >mysql存储这个值是字段需要用int UNSIGNED。不用UNSIGNED的话,128以上的IP段就存储不了了。 >传统的方法,创建varchar(15),需要占用15个字节,而改时使用int只需要4字节,可以省一些字节。 >php存入时:$ip = ip2long($ip); mysql取出时:SELECT INET_ATON(ip) FROM table ... php取出时,多一步:$ip = long2ip($ip); **转换以前的数据:** 1.把以前的varchar()数据转换为int型的SQL语句: `UPDATE `hx_table` SET ip = INET_ATON(ip) WHERE INET_ATON(ip) is NOT NULL ` 2.把字段更改为int型: `ALTER TABLE `hx_table` CHANGE `ip` `ip` INT UNSIGNED NOT NULL ` 3.程序做相应修改上传,完成。 @@UPDATE@@20110310: 在32位的机子上,echo ip2long('192.168.1.38');由于超过32位的最大数,导致输出负数-1062731482。 有两种方法更新为正数: $ip_long = bindec(decbin(ip2long($ip))); 或 $ip_long = = sprintf("%u", ip2long($ip)); 因此一种是修改PHP程序,使其肯定存入正数。 另一种是将mysql的这个字段使用int,非UNSIGNED,使其可以存入负数。