Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说PHP一些好玩但是让你涨知识的题(收藏篇),希望能够帮助你!!!。
1、
$A="Hello "; functionprint_A() { $A = "phpmysql !!"; global $A; global 全局变量 函数是独立的模块 $A外界定义的 echo $A; } echo $A; //Hello print_A(); //Hello 在你将$A定义为全局变量的时候,并未修改$A的值
2、
$email = ‘langwan@thizlinux.com.cn’; $str = ___strstr_($email,‘@’); $info = __explode__(‘.’,$str); ___print_r_($info); 输出结果为: Array ([0] => @thizlinux [1]=>com[2]=>cn) 输出结果是一个数组
3、定义一个404跳转
header("Http/1.1 404 Not Found");
5、不用PHP函数实现字符串反转
Notice: Uninitialized string offset: 7 in D:\wamp\www\phpTest\test.php on line 7 //数组越界的问题 $str = 'abcdefg'; $len = strlen($str); $return = ''; for($i=$len-1;$i>=0;$i--){ $return.=$str{$i}; } echo $return;
6、写出五种获取.jpg或者jpg的的方法
$dir = 'Uploads/img.upload.jpg'; substr($str,-3); //echo substr($dir,strrpos($dir,'.')); //echo strrchr($dir,'.'); //$arr = explode('.',$dir); //print_r(array_pop($arr)); //$p = pathinfo($dir); //print_r($p); //print_r($p['extension']); //$new_str = strrev($dir); //echo $new_str."\n"; //$a = strrev(substr($new_str,0,strpos($new_str,'.'))); //echo $a;
7、请写一个函数,实现以下功能: 字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”
function o($str){ $arr = explode('_',$str); $str = ''; foreach($arr as $v){ $str.=ucfirst($v); } return $str; } echo o('make_by_id');
方法2:
function ucfirstTest($str){ return ucfirst($str); } function test($str){ $arr = explode('_',$str); $new_arr = array_map('ucfirstTest',$arr); $str = implode('',$new_arr); return $str; } $str = 'open_str'; echo test($str);
8、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)
echo date('Y-m-d H:i:s',strtotime('-1 days')); 9、mb_substr($str,1,10,'utf-8'); 10、修改session的生存时间 session_set_cookie_params
11、strpos====这里要注意的就是strpos返回的是0,因为他在第0,所以要用===判断
$str = 'https://www.baidu.com'; $str1 = 'https://'; print_r(strpos($str,$str1)); if(strpos($str,$str1) !== false){ }
12、下面输出是什么,主要考的就是运算符的优先级和++ --的问题
$x = 5; echo $x; 5 echo "<br />"; echo $x+++$x++; 5+6 = 11 echo "<br />"; echo $x; 11 echo "<br />"; echo $x---$x--; 7-6 = 1 echo "<br />"; echo $x; 5
13、array_merge合并的时候,传入的都是数组,如果一个不是数组就会返回null
14、$x = true and false; var_dump($x); true
15、PHP的可变变量:$a = c; $a = 10; $c = 10;
<form action="test.php" method="post"> <input type="text" name="a" id=""/> <input type="text" name="b" id=""/> <input type="submit" value="aa"/> </form> foreach($_POST as $k=>$v){ ${$k} = $v; } echo 'a'.isset($a)?$a:''.PHP_EOL; echo 'b'.isset($b)?$b:''.PHP_EOL;
16、什么是自连接:无限分类就是自己链接自己查询
17、html动态生成的节点加点击事件
$(".h3").on("click","h3",{foo:"文本:"},function(event){ alert(event.data.foo+this.textContent); });
18、$url = 'http://www.test.com.cn/abc/de/fg.php?id=1'; 获取php或者.php
$b = parse_url($url); //php解析url地址,parse_str是解析字符串parse_str($str,$out) echo "<pre>"; /**array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(15) "www.test.com.cn" ["path"]=> string(14) "/abc/de/fg.php" ["query"]=> string(4) "id=1" } */ $arr = $b['path']; ///abc/de/fg.php echo substr($arr,strpos($arr,'.')); $new_arr = explode('.',$arr); echo end($new_arr); 高效 $arr = parse_url('http://www.sina.com.cn/abc/de/fg.php?id=1'); $result=pathinfo(arr['path']);var_dump($arr); array(4) { ["dirname"]=> string(7) "/abc/de" ["basename"]=> string(6) "fg.php" ["extension"]=> string(3) "php" ["filename"]=> string(2) "fg" } var_dump($result['extension']);
19、mkdir和is_dir的使用
$dir = './liuzhu/test/'; if(is_dir($dir)){ //如果存在就返回true file_put_contents($dir.'1.txt',$url); }else{ //如果不存在就创建,true的这个参数是可以循环创建 if(mkdir($dir,0777,true)){ file_put_contents($dir.'1.txt',$url); }; }
20、定义一个字符串,然后获取第一个字符
$str = 'abcdef'; $one = $str[1] || $str{1} 这两种方式
21、下面输出no
$v = 1; $m = 2; $l = 3; if( $l > $m > $v){ echo "yes"; }else{ echo "no"; }
首先$l>$m返回的是一个true 然后true>1 就返回了null
22、获取图片的信息
getimagesize () 获取图片的尺寸 Imagesx () 获取图片的宽度 Imagesy () 获取图片的高度 23、$_SERVER; $host = $_SERVER['HTTP_HOST']; //localhost $self = $_SERVER['PHP_SELF']; ///phpTest/test.php echo $host.$self; //localhost/phpTest/test.php echo $_SERVER['REMOTE_ADDR']; //客户端ip地址 echo $_SERVER['SERVER_ADDR']; //服务端ip地址 echo $_SERVER['REQUEST_URI']; ///phpTest/test.php
24、php.ini 中safe mod关闭 影响哪些函数和参数,至少写6个?
move_uploaded_file() exec() system() passthru() popen() fopen() mkdir() rmdir() rename() unlink() copy() chgrp() chown() chmod() touch() symlink() link() parse_ini_file() set_time_limit() max_execution_time mail()
25、isset() 、empty()与is_null的区别
1、当变量未定义时,is_null() 和“参数本身”是不允许作为参数判断的,会报Notice警告错误;
2、empty , isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
3、isset():仅当null和未定义,返回false;
4、empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回true;
5、is_null():仅判断是否为null,未定义报警告;
6、变量本身作为参数,与empty()一致,但接受未定义变量时,报警告;
26、http_build_query()
$arr = [ 'title'=>'nihao', 'content'=>'world' ]; $str = http_build_query($arr); var_dump($str);
27、curl file_get_contents() socket三种方式实现提交数据
28、var_dump(((bool)'all')+1); 2 true=1 1+1=2
29、如果你一个整型integer超出了范围,那么就会被转成float
30、如果你定义的了一个数组,那么当你unset这个数组的时候,你又定义了一个$a[5] 那么这个键应该是从5开始
31、如何保证你的api接口的安全性
32、这个地方考察是先用后加的问题
$a = 3; $b = 5; if($a == 3 || $b == 7){ echo $a++; echo $b++; } echo $a.' '.$b; 3 5 4 6
33、count除去数组和实例化对象 其他的count()都是1 null是0
$a = count([4,5,6])+count(null)+count(false); var_dump($a);
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。