整理了一下有过与js和php的内容概要:
js:
变量:
相当于容器,储存数值或数组,可变。
变量有作用域,在最近的大括号内。
var a = 1;
var b="tom";
控制语句:
也就是各种循环:
for循环:
for(var i=0;i<n;i++){
执行的代码
}
while循环:
while(条件){
执行的代码;
i++;
}
do while循环:
do{
执行的代码;
i++;
}
while(条件);
switch case:
switch(n)
{
case 1:
执行代码1
break;
case 2:
执行代码2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
if条件语句:
if(条件){
代码
}else if(条件){
代码
}else{
代码
}
break:在循环、switch里边有使用,(跳出当前的本层循环)
continue:在循环里边使用,(跳出本次循环,进入下次循环)
数组:
定义:
有许多变量,名称和数据类型保持一致。
var arr=[元素,元素,元素。。。];
var arr = new Array(元素,元素,元素。。。);
var arr = new Array(3);
arr[0] = 元素;
arr[1] = 元素;
数组长度:
console.log(arr.length);
数组遍历:
for循环遍历:
for(var i=0;i<arr.length;i++){
console.log(i+'--'+arr[i]);
}
for-in遍历:(数组和对象都可以遍历)
for(var k in color){
console.log(k+'=='+color[k]);
}
运算符:
算术运算符:
+ - * / % ++ --
%:取余运算符
自增自减:
i++: 先取值,后++
++i: 先++,后取值
比较运算符:
> < >= <= != == === !==
==:只是数值的比较,大概比较
===:数值和数据类型都进行比较,严格比较
逻辑运算符:
&&:逻辑与,两边结果都为真,结果为真
||:逻辑或,两边结果一个为真,结果就为真
!:逻辑非,真就是假,假就是真(布尔结果)
数据类型:
Number String Boolean Null Undefined Object
整数:int
十进制: var age = 23;
八进制: var score = 023; 2*8+3=19的十进制数
十六进制: var color = 0x25; 2*16+5=37的十进制数
10:A 11:B 12:C 13:D 14:E 15:F
浮点数:小数,float
最大数,最小数:
最大:Number.MAX_VALUE;
最小:Number.MIN_VALUE;
无穷大的数:
console.log(Number.MAX_VALUE+Number.MAX_VALUE);
console.log(10/0);
函数方法:
function 函数名(){};
预加载:代码先把函数的声明放入内存。代码开起来是先调用、后声明,本质是先声明、后调用的。
函数预加载,允许先调用,再声明。
函数方法不调用就不执行
函数的形参和实参:
function 函数名(形参1,形参2,形参3=’abc’){}
函数名(‘tom’,23,’beijing’);//传递实参信息
php:
变量:
定义:
变量是包含了一个名称和一个值的“标识符”;
$v1=1;
当我们在代码中使用$v1这个变量名,就是指使用“1”这个数据值。
echo $v1; //输出1
当我们在代码中对$v1这个变量进行一定的“运算”,也就是对这个数据1进行运算:
$v1++; //就是将1的值自加1,即结果数据变成了2
形式:变量必须以$开头,后面紧跟变量名
定义变量(赋值):直接给变量赋值,就是定义;(定义变量必须赋值)
判断变量是否存在isset();
$v1=1;
$v2=null;
if(isset($v1)){
echo"<br/>v1存在"; //输出
}
if(isset($v2)){
echo"<br/>v2存在"; //不输出
}
修改变量值(赋值):
第二次及以后给一个变量赋值,就算修改变量值
删除unset():就是断开变量名跟数据之间的“引用关系”
命名规则:通常命名包括变量名,函数名,常量名,类名,接口名,等等
变量间的传值:
值传递:
是指一个变脸的数据值复制一份,然后赋值给另一个变量
$v1=1;
$v2=$v2; //此时发生传值问题
$v3=$v1+10; //此时没有传值问题
$v2++;
echo"<br/>v1=$v1,v2=$v2";
结果为:v1=1,v2=2;
引用传值:
引用关系同时传递
$v10=10;
$v20=&$v10;
$v20++;
echo "<br/>v10=$v10,v20=$v20";
结果为:v10=11,v20=11;
变量作用域:在距离变量最近的大括号内
超全局变量的作用域是全局的。
session_start();
$SESSION("uid")=$uid;
控制语句:
for循环:
for(var i=0;i<n;i++){
执行的代码
}
while循环:
$v1 = 10; //初始化循环变量
while( $v1〉4 ){ //判断循环变量的条件
echo “abc”;
$v1--;
}
do while循环:
do{
执行的代码;
$i++;
}
while(条件);
switch case:
switch(n)
{
case 1:
执行代码1
break;
case 2:
执行代码2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
如果没有使用break,则一旦某个状态满足,就会继续执行后续状态中的进程代码,而不再判断。
if条件语句:
if($v1>4){
echo"v1>4";
}else if($v1<2){
echo"v1<2";
}else{
echo"2<v1<4";
}
break中断:终止整个循环语句,而跳出循环进入到循环结构之后的语句
continue中断:终止当前正在执行的循环体中的语句,而进入到循环的下一次过程里(改变,判断)
break $n; //$n是一个大于等于1的整数,表示要中断的循环层数;
continue $n;
数组:
基础:
$arr1=array(元素1,元素2,、、、、);
array(1, 5, 1.1, “abc”, true, false); //可以存储任何数据,此时为“默认下标”,
array(2=>1, 5=>5, 3=>1.1, 7=>“abc”, 0=>true);//下标可以任意设定(无需顺序,无需连续)
array(2=>1, 5, 1=>1.1, “abc”, 0=>true)//可以加下标,也可以不加(默认下标),下标分别是:2,3,1,4,0
//默认下标规则:前面已经用过的最大数字下标+1
array(2=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true)//混合下标,同样遵循默认下标规则
array(-2=>1, ‘dd’=>5, 1.1, “abc”, true); //负数下标不算在整数下标中,而只当作字符下标
//则最后3项的下标是:0, 1, 2
array(2.7=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true);//浮点数下标为自动转换为整数,且直接抹掉小数
array(“2.7” =>1, ‘dd’=>5, “11”=>1.1, “abc”, true)//纯数字字符串下标,当作数字看待,
//则此时下标为:2, ‘dd’, 11, 12, 13
array(2=>1, ‘dd’=>5, true=>1.1, “abc”, false=>true)//布尔值当下标,则true为1,false为0;
array(2=>1, ‘dd’=>5, 2=>1.1, “abc”, true)//如果下标跟前面的重复,则单纯覆盖前面同名下标的值
//此时相当于为:array(2=>1.1, ‘dd’=>5, “abc”, true)
数组分类:
关联数组:通常是指下标为字符串,并且该字符串大体可以表达出数据的含义的数组。
索引数组:通常是指一个数组的下标是严格的从0开始的连续的数字下标——跟js数组一样。
多维数组:$v1 = 数组名[下标][下标][.....]
遍历数组:
foreach( $arr as [ $key => ] $value ) //$key可以称为键变量,$value可以称为值变量。
运算符:
算术运算符:
+ - * / % ++ --
注意取余运算%,先取整,再取余
$v1 = 7.5 % 3; //结果是:1
$v2 = 7.5 % 3.5; //结果是:1
自增自减运算符:
常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”
布尔值递增递减无效
null递减无效,递增结果为1
比较运算符:
> >= < <= ==松散相等 != ===严格相等 !==
==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”
===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。
常见不同类型的比较:
如果有布尔值,均转为布尔值比较:规则:true > false
否则,如果有数字,均转为数字比较:
否则,如果两边都是纯数字字符串,转为数字比较
否则,就按字符串比较。
字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较
逻辑运算符:
&& || !
前提:都是针对布尔类型的值进行的运算,如果不是布尔,就会转换为布尔。
逻辑与:
true && true ==> true;
true && false ==>false
false && true ==>false;
false && false ==>false;
只有两个都是true,结果才是true
只要有一个是false,结果就是false
逻辑或:
true || true ==> true;
true || false ==>true
false || true ==>true;
false || false ==>false;
只有两个都是false,结果才是false
只要有一个是true,结果就是true
逻辑非:
!true ==> false
!false ===>true
字符串运算符:
只有一个: .
衍生一个: .=
会将运算符两边的数据转换为字符串。
赋值运算符:
只有一个: =
衍生多个: += -= *= /= %= .=
三目运算符:
数据1 ? 数据2 :数据3
如果数据1为true,则运算结果为数据2, 否则运算结果为数据3
数据类型:
整数类型:int,integer
浮点类型:float,double,real
$v1=1.234; //带小数点,就是浮点类型
$v2=1.234E3; //带E的形式就是浮点数
浮点数不应直接进行大小比较
当整数运算的结果超出整数的范围后,会自动转换为浮点数。
字符串类型:string
布尔类型:bool,boolean
在应用出,我们常常会(需要)直接将一个数据(可能是各种其他类型)当作一个布尔值来进行判断。
数组类型array:
数组遍历在php中有专门语法:
foreach( 数组名 as 下标变量$k => 值变量$v1 ){
//这里就是循环体,就可以使用两个变量$k, $v1
}
对象类型objict:
php中的对象,通常都是指自己定义的对象,纯语法的。
资源类型resource
含义:基本都是对外部数据的引用。
空类型null;
函数方法:
function 函数名 (形参1,形参2,.... )
{
//函数体(代码块)
}
形参与实参:
形参一定是变量名;
该变量只在该函数中有效;
在函数调用并执行时有效,函数结束,变量同时也被销毁;
实参是实际数据,作用是将数据“赋值给”形参。
实参和形参必须“一一对应”。
定义形式:function 函数名(形参1,形参2,...... ){ 。。。。}
调用形式: 函数名(实参1,实参2,..... )
默认值参数:
function getArea($r,$PI=3.14){
代码;
}
此时$PI=3.14是默认值参数,
匿名函数:
①$f1 = function(){。。。函数体;};
②调用其他函数2(匿名函数,实参1,实参2, ...... );