个人总结php笔试题三
来源:互联网 发布:如何做数据分析研究 编辑:程序博客网 时间:2024/06/08 05:28
7.PHP中empty()和isset()区别
empty如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset
如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。
is_null
检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】
8.for和foreach哪个更快
foreach更快些。总体来说,如果数据库过几十万了,才能看出来快一点还是慢一点,如果低于10万的循环,就不用测试了。php推荐用foreach。
循环数字数组时,for需要事先count($arr)计算数组长度,需要引入自增变量$i,每次循环都要进行条件判断$i<$c,然后自增$i++,输出数组元素时,$arr[$i]需要进行哈希操作.
而foreach循环数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作,所以性能肯定要比for和while高.另外,for和while对存在键值映射的关联数组无能为力.所以,遍历数组,首选foreach.foreach也是我PHP里最喜欢的关键字,因为它确实强大.array_map/array_filter/array_walk遍历数组的方式和foreach一样,但需要执行回调函数,所以也比foreach慢.
参考:http://www.cnblogs.com/niniwzw/archive/2008/06/03/1212535.html
9.php的内存管理机制和垃圾回收机制
php的内存管理机制是:预先给出一块空间,用来存储变量,当空间不够时,再申请一块新的空间。垃圾回收:
1.在5.2版本或之前版本,PHP会根据refcount值来判断是不是垃圾
如果refcount值为0,PHP会当做垃圾释放掉
这种回收机制有缺陷,对于环状引用的变量无法回收
2.在5.3之后版本改进了垃圾回收机制
如果发现一个zval容器中的refcount在增加,说明不是垃圾
如果发现一个zval容器中的refcount在减少,如果减到了0,直接当做垃圾回收
如果发现一个zval容器中的refcount在减少,并没有减到0,PHP会把该值放到缓冲区,当做有可能是垃圾的怀疑对象。
当缓冲区达到了临界值,PHP会自动调用一个方法去遍历每一个值,如果发现是垃圾就清理
10.不用中间变量把两个值互换
/字符串版本 结合使用substr,strlen两个方法实现$a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a.=$b;$b=substr($a,0,(strlen($a)-strlen($b)));$a=substr($a, strlen($b));echo '交换后$a:'.$a.',$b:'.$b.'<br />';echo '-----------------------<br/>';
//字符串版本 使用str_replace方法实现
$a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a.=$b;$b=str_replace($b, "", $a);$a=str_replace($b, "", $a);echo '交换后$a:'.$a.',$b:'.$b.'<br />';echo '-----------------------<br/>';
//字符串版本 结合使用list方法和array实现
$a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';list($b,$a)=array($a,$b);echo '交换后$a:'.$a.',$b:'.$b.'<br />';echo '-----------------------<br/>';
//字符串和数字都适用 使用异或运算
$a='a';$b='b';echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a=$a^$b;$b=$b^$a;$a=$a^$b;echo '交换后$a:'.$a.',$b:'.$b.'<br />';echo '-----------------------<br/>';
//只适用于数字
$a=3;$b=5;echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a=$a+$b;$b=$a-$b;$a=$a-$b;echo '交换后$a:'.$a.',$b:'.$b.'<br />';
11.输入一行字符,分别计算其中英文字母,空格和数字的个数
echo $str = " a b1c你 2好 34 ^&*5";preg_match_all("/[0-9]{1}/",$str,$arrNum);preg_match_all("/[a-zA-Z]{1}/",$str,$arrAl);preg_match_all("/([/x{4e00}-/x{9fa5}]){1}/u",$str,$arrCh);$length = strlen($str)-(count($arrNum[0])+count($arrAl[0])+count($arrCh[0]));for ($i=0;$i<strlen($str);$i++){ if($str[$i] == " " ||$str[$i] == " "){ $num ++; }}echo "字母个数:".count($arrAl[0])."<br/>";echo "中文个数:".count($arrCh[0])."<br/>";echo "空格个数".$num."<br/>";echo "数字个数:".count($arrNum[0])."<br/>";echo "其他字符个数:".$length;
12.编写一个程序,用1,2,3,这三个数能组成多少互不相同且不重复的三位数,都是多少?
$i = $j = $k = $t = 0; for ($i = 1; $i <= 4; $i++) { for ($j = 1; $j <= 4; $j++) { for ($k = 1; $k <= 4; $k++) { if ($i != $j && $j != $k && $i != $k) { $t+=1; dump($i * 100 + $j * 10 + $k); } } } } dump('总数:' . $t);
13.编写一个程序,输入n求n!(用递归处理)
public function test($n) { if ($n == 0 || $n == 1) return 1; else return $n * $this->test($n - 1); }
阅读全文
1 0
- 个人总结php笔试题三
- 个人总结php笔试题一
- 个人总结php笔试题二
- 个人总结php笔试题四
- 个人总结php笔试题五
- Java笔试题总结(三)
- php笔试面试总结
- php笔试面试总结
- php笔试面试总结
- PHP-ExcelReader个人总结
- 笔试选择题总结3(个人总结)
- C++ prime/笔试 总结三
- 个人总结面试题目三
- 前端基础个人总结三
- HTTP个人总结(三)
- laravel artisan 个人总结(三)
- PHP文件操作个人总结
- Java学习总结第三十四天Java笔试题(三)
- Cookie/Session机制详解
- [Android]笔记20:使用Toast显示提示框
- Java面向对象高级--抽象类的基本概念------abstract
- 从零开始搭建vue
- Time limit exceeded 出现的原因
- 个人总结php笔试题三
- 面试:Mybatis中的#和$的区别
- linux环境变量设置错误后,如何恢复解决方案
- Hyperscan 介绍与安装
- Android蓝牙BLE之RSSI读写(2)
- <Android 基础(三十九)> SpannableString
- ios-GCD的队列介绍
- 深度优先搜索
- cmd命令行中执行Java文件中文字符乱码情况解决