PHP学习笔记(四)

计算机码、位运算符、运算符优先级、流程控制(顺序、分支、循环)

计算机码:计算机在实际存储数据的时候,采用的编码方式(二进制规则)
计算机码:
原码(十进制转二进制)、
反码(针对负数,左边符号为0)、
补码(针对负数,反码+1)

系统中存在两个-:+0和-0
+0:00000000
-0:10000000 原码
取反:11111111
补码:00000000

$a=5;
$b=-5;
/*
5原码:00000101
-5 原码:10000101
   取反:11111010
   求补:11111011
*/

位运算符:去除就三种最小的单位(bit)进行运算
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个位一个为1,结果为1
~:按位非,一个位如果为1则变0,反之亦然
^:按位异或,两个相同则位0,向左移动一位,右边补0
<<:按位左移,整个位(32位),向左移动一位,右边补0
.>>:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)

//按位与
var_dump($a & $b);
/*
  5 00000101
 -5 11111011
  & 00000001
*/

//按位非
var_dump(~$b);
/*
 -5 11111011
 ~  00000100
*/

//按位右移
var_dump($b>>2);
/*
 -5 11111011
>>2 11111110  补码
 -1 11111101  反码
取反 10000010  原码 -2
*/

//按位左移
var_dump($a>>1);

?>

注意:
1.系统进行任何运算的时候都是利用补码运算
2.运算结束后必须转成原码
3.按位左移:乘以2的操作
4.按位右移:除以2的操作(不完全正确):除二由余数会出现小数;
运算符优先级
运算符优先级
控制分支:

  • 顺序结构 :所有代码默认都是从上而下一次执行,基本结构
  • 分支结构 :if 分支、switch 分支
  • 循环结构 :for循环、while循环、do-while循环、foreach循环(针对数组)

if 分支:

$day="sunday";
if($day=="sunday"){
	echo 'go out';
}

if($day=="sunday"){ 
	echo 'go out';
}else{
	echo 'work';
}

if($day=='sunday'){
	echo 'go out';
}else if($day=='satday'){
	echo 'play at home';
}else{
	echo 'work';
}

switch 分支:

$day=1;
switch($day){
	case 1:
		echo '1';
		break;
	case 2:
		echo '2';
		break;
	case 3:
		echo '3';
		break;
	default:
		echo 'error';
		break;		
}

for 循环
for循环执行原理

//从1到10输出:初始为1,结果为10
for($i=1;$i<=10;$i++){
	echo $i,'<br/>';
}

for($i=1,$end=10;$i<=$end;$i++){
	echo $i,'<br/>';
}

//无条件for循环,要避免
for(;;){
	echo 'hello world';
}

while 循环 : 先判断再执行

$i=1;
while($i<=10){
	echo $i,'<br/>';
	$i++;
}

do-while 循环 : 先执行后判断(至少执行一次)

$i=1;
while($i<=10){
	echo $i,'<br/>';
	$i++;
}

循环控制:在循环内部对循环本身进行控制
中断控制:重新开始循环,循环体中还有其他内容,也要再执行

while($i<=100){
//判断是否是5的倍数
if($i%5!=0){
	//说明当前$i不是5的倍数
	$i++;
	//重新循环
	continue;
}
	echo $i++,'<br/>';
}
while($i<=100){
//判断是否是5的倍数
if($i%5!=0){
	//说明当前$i不是5的倍数
	$i++;
	//终止循环
	break;
}
	echo $i++,'<br/>';
}

流程控制代替语法

流程控制:分支和循环结构的替代语言
php本身是嵌入到html中的脚本语言,需要再html中书写一些关于判断或者循环的结构语法,必须符合php标签规范,需要html与php进行混搭,如果使用原始的php代码都会非常不美观。

<!DOCTYPE html> 
<html> 
<body> 
<table border=1>
	<?php for($i=1;$i<10;$i++){ ?>
	<tr>
		<?php for($j=1;$j<=$i;$j++){ ?>
			<td>
				<?php echo $i . '*' . $j . '=' .$i * $j; ?>
			</td>
		<?php } ?>
	</tr>
	<?php } ?>
</table>

</body> 
</html>

运行结果

九九乘法表
在php书写到html中这些大括号{}非常不美观,php提供了一种替代机制,让其不可以书写大括号:

<!DOCTYPE html> 
<html> 
<body> 
<table border=1>
	<?php for($i=1;$i<10;$i++): ?>
	<tr>
		<?php for($j=1;$j<=$i;$j++): ?>
			<td>
				<?php echo $i . '*' . $j . '=' .$i * $j; ?>
			</td>
		<?php endfor; ?>
	</tr>
	<?php endfor; ?>
</table>
</body> 
</html>

效果与上面的一致
php提供了分支结构和循环结构的替代语法,全部都是对应的一个模式:
例如:
if: if(): endif;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值