递归-----函数本身调用本身。每一个栈中的变量都是独立的,不受外部变量的影响,除非传参。这一点和Js不一样。
在一个php页面中要引用其他的php文件可以使用require,require_once或者include,include_once;
require引入的文件如果不存在则会报错,而include只会警告waring,程序可以继续运行。带有_once表明只会读取一次文件。
变量的地址,使用global可以引用外部的变量,使用unset()则可以删除一个变量;案例
在形参变量前面加上地址符&,则可以把函数内部变量的执行结果传到函数外面。
Js中的全局和局部变量:
1 <script type="text/javascript"> 2 var a=2; 3 function b(a){ 4 //局部变量 5 a+=20; 6 alert(a); 7 } 8 b(a); 9 alert(a); 10 //22; 11 //传参--->> 2; 12 </script>
1 /*$a=2; 2 function b(){ 3 //global $a; 4 $a+=20; 5 //未定义 6 echo a; 7 } 8 b(); 9 echo $a;*/ 10 //22; 11 //和js里的全局变量有区别,php里面必须声明,否则只是局部变量
传参时,给参数设置默认值:
1 //------默认值设置 2 function aa($a,$b=1){ 3 $res=$a+$b; 4 return $res; 5 } 6 $e=10; 7 $f=100; 8 echo aa($e,$f);//第二个数值会默认代替;如果第二个值重新定义,则会取代默认值
二进制:只需要知道二进制三码之间的转换规则,以及位运算的规则,基本上没有什么难度。
二进制中的原码,反码,补码
位运算规则:
案例
案例
1 echo ~5; 2 //-6 3 //分析步骤 4 //正数的原码,反码,补码都是一样的,所以先求出补码,正数的符号位以0开头 5 //00000000 00000000 00000000 00000101----》1*1+0*2+1*4=5 6 //11111111 11111111 11111111 11111010----》取反-----现在为负数的补码,需要转换为原码 7 //11111111 11111111 11111111 11111001----》转换为反码-1; 8 //10000000 00000000 00000000 00000110----》原码-----》0*0+1*2+1*4=-6; 9 10 $a=-1>>2; 11 echo $a; 12 //0 13 //把二进制表示的-1向右移动2位,但是首先要算出负数的补码 14 //10000000 00000000 00000000 00000001----》原码 15 //11111111 11111111 11111111 11111110----》反码--(符号位不能变) 16 //11111111 11111111 11111111 11111111----》补码 17 //11111111 11111111 11111111 11111111----》从符号位后开始向右移动,用符号位1补齐---最后转换为原码 18 //11111111 11111111 11111111 11111110 19 //10000000 00000000 00000000 00000001---->>结果为-1 20 21 //最终结论:每向左移动一次乘以2,向右移动一次除以2;