php中常见问题总结

1.isset()和empty()的区别

两者都是测试变量用的。但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示。如果一个变量被赋空值,$foo=”"或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。要注销一个变量,可以用 unset($foo)或者$foo=NULL。

2.如何显示错误信息

当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽

3.单引号 双引号什么区别?分别什么时侯用

单引号中,任何变量($var)、特殊转义字符(如”t r n”等)不会被解析,因此PHP的解析速度更快,转义字符仅仅支持”’”和””这样对单引号和反斜杠本身的转义;双引号中,变量($var)值会代入字符串中,特殊转义字符也会被解析成特定的单个字符,还有一些专门针对上述两项特性的特殊功能性转义,例如”$”和”。这样虽然程序编写更加方便,但同时PHP的解析也很慢;数组中,如果下标不是整型,而是字符串类型,请务必用单引号将下标括起,正确的写法为$array['key'],而不是$array[key],因为不正确的写法会使PHP解析器认为key是一个常量,进而先判断常量是否存在,不存在时才以”key”作为下标带入表达式中,同时出发错误事件,产生一条Notice级错误。因此,在绝大多数可以使用单引号的场合,不要使用双引号。

4.print,echo,print_r什么区别?分别什么时侯用?

echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo 会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用

5.在PHP中有些时候需要打开远程文件

打开远程文件函数为:fopen(http://XXX.com/a.php),fsockopen(http://XXX.com/a.php) , file_get_contents(http://XXX.com/a.php)等)

在php5,apache2.2.X环境下,会提示你无法打开文件流,http请求失败(failed to open stream: HTTP request failed!)

在php.ini中,有这样两个选项:

allow_url_fopen =on(表示可以通过url打开远程文件),user_agent=”PHP”(表示通过哪种脚本访问网络,默认前面有个 ” ; ” 去掉即可。),重启Apache服务即可。

6.如何预先获取auto_increment的值?

  1. mysql_connect(’localhost’,'root’,'root’) or die(’不能连接到服务器‘); 
  2. mysql_select_db(’test’);                      //连接数据库 
  3. $sql = “show create table id_user”;     //id_userd 为表名 
  4. $query = mysql_query($sql); 
  5. $arr = mysql_fetch_array($query); 
  6. $b = strstr($arr[1],’AUTO_INCREMENT=’);       //获取子字符串,包含AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ) 
  7. $result = intval(substr($b,15));              //substr()从字符串第16个位置获取字符串,再对获取后的字符串进行int类型转换 
  8. echo ‘AUTO_INCREMENT的值’ .$result;           //输出结果:即为下一次插入数据时的ID值 

7.利用获得客户端信息

getenv(”REMOTE_ADDR”)可以得到浏览者的IP

getenv(”HTTP_USER_AGENT”)可以得到浏览者的操作系统类型,浏览器类型

getenv能得到所有$_ENV这个全局变量的所有东西

print_r($_ENV)可以看到很多东西,比如

echo getenv(ALLUSERSPROFILE); 可以看到ALLUSERSPROFILE的值

echo getenv(PATHEXT);可以看到PATHEXT的值

8.mysql_fetch_row()和mysql_fetch_array()的区别

mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。用 mysql_fetch_array()并不明显比用 mysql_fetch_row()慢,而且还提供了明显更多的值。

mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和MYSQL_BOTH。本特性是PHP 3.0.7 起新加的。本参数的默认值是 MYSQL_BOTH。

9.EOD的用法和功效

就是比单引号和双引号好些,能包含换行。EOD可以改成其他字符。

10.用gdate()获得一长串数字怎么转换成正常的时间?

gmdate 返回 GMT 时间,除此以外和 date() 函数完全一样。如果你需要本地时间,就用 date() 来格式化时间戳。

11.正则里面的()//区别何在?

//是模式定界符,代表里面是一个正则规则。

()代表的是子模式,一个//中可以有很多的()组成,可以用1 2 或 $1 $2来匹配前面子模式的值。

12.require和require_once有啥区别?

require重复调用会多次加载你饮用的文件;require_once只加载一次,而不管你实际上调用了多少次,主要用于复杂的文件包含关系,例如b包含a,c包含a,但同时c又包含了b,那么如果用require的话可能会导致两次加载a

13.三个IP地址的获取有什么区别?

$_SERVER['REMOTE_ADDR'];

$_SERVER['HTTP_CLIENT_IP'];

$_SERVER['HTTP_X_FORWARDED_FOR'];

$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP

$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)

$_SERVER['HTTP_X_FORWARDED_FOR'];  //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

14.$_GET和$_POST的区别?

一:get 方法是限制传值的大小,不能超过2K. 而post不限制传值的大小.

二:Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

三:Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用”?”连接,而各个变量之间使用”&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

四:Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

15.在类里面的函数前面可以加public,private,但在函数库中的函数前面不能加呢?

function自定的随便你,public是公开使用的类属性对象,privat是独立使用的类属性对象;

类中 public 或 private 是指这个方法(要注意叫”方法”)是对外公开还是是属于类私有而你指的函数库,它是”函数”的库,不属于类中的方法,所以不必也不能有前置修饰。

16.页面执行时间怎么算的?

  1. $mtime = explode(’ ‘, microtime()); 
  2.  
  3. $starttime = $mtime[1] + $mtime[0]; 
  4. …… 
  5. …… 
  6. …… 
  7. $mtime = explode(’ ‘, microtime()); 
  8. $endtime = $mtime[1] + $mtime[0]; 
  9. $usedtime = $endtime – $starttime
  10. printf(”<br />%0.4f s”, $usedtime); 

17. UTF8编码脚本session_start(),header(),settcookie()等函数出错,提示”headers already sent “。

UTF8编码脚本通常的编辑器都会在文件头部加上三字节的BOM编码来识别UTF8编码格式,这三个字节是普通文件编辑器看不到,而输出时去先行以HTML输出了。执行以上函数时就会提示以上错误。解决办法:用editplus等可以清除BOM的编辑器,清除BOM(设置为utf8清除BOM)保存一下即可。

18. PHP中单引号,双引号,反引号的区别

PHP单引号(’),双引号(”")反引号(`)都能引用字串。单引号中变量不被转义,双引号转义变量,而反引号中变量转义作为shell命令被执行。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » php中常见问题总结

1 评论

  1. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡