PHP学习笔记(中:操作符,流程控制,数组)

1、操作符

<?php
	//算数运算符
	$a=4;
	$b=3;
	$c=$a/$b;
	echo $c."</br>";
	/*
	echo $c1+$c2,"</br>" ; #8
	echo $c1-$c2,"</br>" ; #-2
	echo $c1*$c2,"</br>" ; #15
	echo $c1/$c2,"</br>" ;#取整数部分 #0.6
	echo $c2/$c1,"</br>" ;#取整数部分 #1
	echo $c1%$c2,"</br>" ;#取余数部分 #3
	*/
	
	//赋值操作符
	/*
	结合性:
    print $value =$a =$b =$c;
	可以等价为:
	print $value = ($a =($b=$c));   //从右到左结合
	*/
	
	$a=5; #5
	echo $a."</br>";
	$a+=5; #10
	echo $a."</br>";
	$a-=5; #5
	echo $a."</br>";
	$a*=5; #25
	echo $a."</br>";
	$a/=5; #5
	echo $a."</br>";
	
	$a.=5; #55,拼接赋值,$a等于$a拼接5
	echo $a."</br>";
	
	//自增自减操作符
	echo $a++."</br>"; #55
	echo $a."</br>"; #56
	
	echo $a--."</br>"; #56
	echo $a."</br>"; #55
	
	echo ++$a."</br>"; #56
	echo $a."</br>"; #56
	
	echo --$a."</br>"; #55
	echo $a."</br>"; #55
	
	
	//字符串操作符
	$s1="hello ";
	$s2=$s1."world!";
	echo $s2."</br>"; #输出hello world!
	
	//逻辑操作符
	$b1=1;
	$b2=0;
	var_dump ($b1); #此时是int
	echo "</br>";
	
	var_dump ($b1 and $b2); #false(结果被转换为bool类型,$b1和$b2仍然是int)
	echo "</br>";
	var_dump ($b1 && $b2);#逻辑与
	echo "</br>";
	
	var_dump ($b1 or $b2); #true
	echo "</br>";
	var_dump ($b1 || $b2);#逻辑或
	echo "</br>";
	
	var_dump (!$b1); #逻辑非 false
	echo "</br>";
	var_dump ($b1 xor $b2);#异或!!true
	echo "</br></br>";
	
	//相等、不等、全等操作符
	var_dump ($b1 == $b2);#false
	var_dump ($b1 != $b2);#true 
	


**var_dump ($b1 <> $b2); #不等操作符的另一种写法**

	echo "</br>";
	
	var_dump ($b1);
	var_dump ($b2);
	echo "</br>";
	var_dump ($b1 === $b2); #全等,类型和值都相等 ,false
	var_dump ($b1 !== $b2); #非全等, TRUE
	
	$b2=1;
	var_dump ($b1);
	var_dump ($b2);
	echo "</br>";
	var_dump ($b1 === $b2); #更改$b2后为 TRUE
	echo "</br></br>";
	
	//比较操作符($b1===$b2=int(1))
	var_dump ($b1<$b2); #false
	echo "</br>";
	
	var_dump ($b1<=$b2);#true
	echo "</br>";
	
	var_dump ($b1>$b2);#false
	echo "</br>";
	
	var_dump ($b1>=$b2);#true
	echo "</br>";
	
	//条件(三元运算符)
	echo ($b1==1)? $b2:-1; #如果$b1等于1,输出$b2;否则输出-1;
	echo "</br>";
	
	//位操作符
	$w1=2; #二进制0010
	$w2=5; #二进制0101
	
	echo ($w1 & $w2); #0 按位与	
	echo "</br>";
	
	var_dump ($w1 | $w2); #int (7) 按位或
	echo "</br>";
	
	var_dump ($w1 ^ $w2); #int (7) 按位异或
	echo "</br>";
	
	var_dump (~ $w1 ); #int (-3) 按位非 
	echo "</br>";
	/*解释:
	   2-> 0000 0010
	   -> 1111 1101 (取反,得到最终结果的补码)
	   -> 1111 1100 (补码-1,得到最终结果的反码)
	   -> 1000 0011 (反码除符号位取反,得到源码,即最终输出结果-3)
	*/
	
	var_dump ($w2>>$w1); #int (1)将$w2中的位向右移动$w1次(每一次移动都表示“除以 2”)
	echo "</br>";
	
	var_dump ($w1<<2); #int (8) 将$w1中的位向左移动2次(每一次移动都表示“乘以 2”)。
	echo "</br>";	
?>

2、单引号和双引号的区别

<?php

    /*解释:
	  单引号,内容会与输入的内容一致,(\n不会输出为换行,而是直接输出)
	  双引号,内容中的变量将会被解析
	  注意:
	  \n在浏览器端不能换行,只显示为一个空格,但在源代码显示中可以,浏览器换行要用</br>
	*/
	
	echo "w1 is $w1\naaa"."</br>"; # w1 is 2 aaa
	echo 'w1 is $w1\n'."</br>"; # w1 is $w1\n

?>

3、PHP流程控制

<?php
 
	//if语句
	$a=5;
	if($a==4){ #注意双等号!
		print "a equals 4"."</br>";
	}elseif($a<4){ #注意是elseif!
		print "a less than 4"."</br>";
	}else{
		print "other"."</br>";
	}
	
	//switch语句(break)
	$category="b";
	switch($category){
		case "a" :
			echo "a";
			break ; #记得写break语句
		case "b" :
			echo "b"."</br>";
			break ;
		case "c" :
			echo "c" ;
			break;
		}
	
	//while语句(end while)
	
	#第一种写法 12345678910
	$i=1;
	while($i<=10){ 
		print $i++;
	}
	echo "</br>";
	
	#第二种写法 234567891011
	$i=1;
	while($i<=10):
		$i++;
		echo $i; # echo后面不能输出i++
	endwhile;
	echo "</br>";
	
	//do_while语句
	$i=11;
	do{
		print $i; #输出11
	}while($i<=10); #记得有分号!!!
	echo "</br>";
	
	//for循环 12345678910
	for($i=1;;$i++){ #第二个表达式为空,死循环
		if($i>10){
			break ;
		}
		print $i; 
	}	
	echo "</br>";
	
	//foreach循环
	/*解释:
	  foreach结构是一种遍历数组简便方法,仅能用于数组,有两种语法。  
	  当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,因此不需要在 foreach 循环之前调用 reset()。
      注意: 
	  foreach 所操作的是指定数组的一个拷贝,而不是该数组本身, foreach 操作后,数组单元的值不受影响。  
	*/
	
	$arr=array("one","two","three");
	foreach($arr as $value){
		echo "Value:$value<br>";
	}
	foreach($arr as $k=>$v){
		echo "Value:$v;Key:$k<br>";
	}
	/*输出:
	  Value:one
	  Value:two
	  Value:three
	
	  Value:one;Key:0
	  Value:two;Key:1
	  Value:three;Key:2
	*/
	
	//break和continue
	//continue 在循环结构中,跳过本次循环中剩余的代码并开始执行下一次循环。 
?>

4、文件包含

<?php

    /*解释:
	  include()语句在其被调用的位置处包含一个文件,效果与在该语句所在位置复制指定文件的数据相同
	  以下文档也适用于 require()。这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require()则导致一个致命错误。
      换句话说,如果想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的路径。 

	  当一个文件被包括时,其中所包含的代码继承了 include 所在行的变量范围。
	*/
	
	//include ‘vars.php’;
	
?>

5、函数

<?php
	$arr = array(0,1,2);
	function Return_array(&$arr){
		foreach($arr as $k=>$v){
			echo "$k=>$v</br>";
		}
		return $arr[0];	
	}
	$a=Return_array($arr);
	echo $a;
?>

6、走近数组

<?php

	//二维数组
	$arr = array("somearray"=>array(6=>5,13=>9,"a"=>42));
	
	echo $arr["somearray"]['a']."</br>";
	
	//print_r输出数组
	print_r($arr);
	echo "</br>";
	
	#参数 return可选参数,使得将输出返回给调用者,而不是发送到标准输出。
	$str=print_r($arr,true); #希望返回$arr数组的内容到$str数组,故将retrun设置为true
	echo $str; #和print_r效果一样
	echo "</br>";
	
	//字符串类型 可以下标直接访问
	$str = "abcdef";
	echo $str[-1]."</br>";
	
	//获取数组长度的函数是 count()
	echo count($arr); #输出1

?>

7、创建数组

<?php
	//空数组
	$arr=array();
	
	
	//array()函数自动分配键值
	$arr=array(1,2,"abc");#自动分配键值0,1,2
	print_r ($arr);
	echo "</br>";
	/*注意:
	  如果对给出的值没有指定键名,则取当前最大的整数索引值加1.
	  如果不存在最大的整数索引值,则以0开始作为索引值.
	*/
	$arr[]="接着"; #继续接着 3,4
	$arr[]="next";
	print_r ($arr);
	echo "</br>";
	/*输出:
	  Array ( [0] => 1 [1] => 2 [2] => abc [3] => 接着 [4] => next )
	*/

	
	//array()函数自己分配键值
	#调用array()就是创建新的数组了!原先的数据会被覆盖!不是接着了!
    $arr=array("set1"=>5,6=>"set2"); #自己分配键值
	$arr["next3"]=7; #接着
	print_r ($arr);
	echo "</br>";
	/*注意:
	  数组的键是唯一的,如果指定的键名已经有了值,则该值会被覆盖. 
	*/
	
	
	//range()函数创建
    /*解释:
	  range()建立一个包含指定范围单元的数组 
	  array range(mixed low,mixed high[,number step]);
	  可选的step参数是单元之间的步进值,默认为 1
	*/
	$arr=range(0,9);
	print_r($arr);
	echo "</br>";
	/*输出:
	  Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
	*/
	$arr=range(0,9,3);
	print_r($arr);
	echo "</br>";
    /*输出:
	  Array ( [0] => 0 [1] => 3 [2] => 6 [3] => 9 )
	*/
?>

8、增删数组

<?php
	
	//按下标删除元素 unset()
	
	unset($arr[0]);#删除一个元素,数组的其他索引不变
	print_r($arr);
	echo "</br>";

    //末尾增加元素 array_push()
	/*
      array_push()函数将variable增加到target_array的末尾,成功时返回TRUE,否则返回FALSE.
	  可以为此函数传递多个变量作为输入参数,同时向数组压入多个变量(元素).
	*/
	array_push($arr,"a","b");
	print_r($arr);
	echo "</br>";
 
	//开头增加元素
	/*
	  array_unshift ( array &$array, mixed $var [, mixed $...] )
	  将传入的单元插入到array数组的开头.
	  单元是作为整体被插入的,将保持同样的顺序.
	  所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变.
	  函数的返回值是 array 数组新的单元数目. 

	*/
	$length=array_unshift($arr,"first");
	print_r($arr);
	echo "</br>".$length."</br>"; 
	
	//末尾删除元素并将其返回 array_pop()
	$last=array_pop($arr);
	print_r($arr);
	echo "</br>".$last."</br>"; 

	//开头删除元素并将其返回 array_shift()
	/*
	array_shift ( array &$array )将 array 的第一个单元移出并作为结果返回(出列)
	array 的长度减一并将所有其它单元向前移动一位.
	所有的数字键名将改为从零开始计数,文字键名不变.
	如果 array 为空(或者不是数组),则返回 NULL.
	使用本函数后会重置数组指针.
	*/
	$first=array_shift($arr);
	print_r($arr);
	echo "</br>".$first."</br>"; 
	
?>

9、遍历数组

<?php
    //for循环结合count()函数遍历,只能遍历数字索引
	/*注意:
	  count ( mixed var [, int mode] )
      计算数组中的单元数目或对象中的属性个数,返回 var 中的单元数目,通常是一个 array,任何其它类型都只有一个单元. 
      如果可选的 mode 参数设为 1,count() 将递归地对数组计数.对计算多维数组的所有单元尤其有用.mode 的默认值是 0 
	*/
	for($i=0;$i<count($arr);$i++){
		echo "第",$i,"个元素是:",$arr[$i],"</br>";
	}

	//current()和next()组合使用
	/*
	  current( )
      语法形式:mixed  current (array target_array)函数返回target_array 数组当前指针位置的数组值。
	  如果内部指针指向超出了单元列表的末端,current() 返回 FALSE。 
	  
	  next ()
      语法形式:mixed next (arrary input_array)
      next( )函数返回input_array 中紧接这放在当前数组指针的下一个位置的数组值。
      
	  current ( )与next ()函数不同,current ( )不移动指针,而next ( )函数需要移动指针。
	*/
	
	while($value=current($arr)){
		echo $value,"</br>";
		echo next($arr),"</br>";
	}
	
	//each() 和 list()联合起来遍历数组
	list($a,$b,$c,$d)=$arr; # list()把数组中的值赋给一些变量
    echo $a,$b,$c,$d,"</br>";
	
	reset($arr); #reset()函数把指针挪到数组开始.用each()前记得用!!
	$each=each($arr);
	var_dump($each); #也能输出数组
	echo "</br>";
	print_r($each); # each()函数返回当前键值对组成的一个长度为四的数组
	echo "</br>";
	
	reset($arr); # 用each()从头遍历前记得用!!
	while(list($key,$val)=each($arr)){
		echo "$key=>$val<br>";
	}
	echo "</br>";
	
	//foreach()遍历数组
	foreach($arr as $key =>$value){
		echo $key."=>".$value."</br>";
	}
	
?>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值