吾爱乐享
个人学习网站

php学习之数组的相关知识-注意事项

吾爱乐享阅读(1686)

1.数组的介绍

说明:一组数据的集合,数组是由元素组成

案例:求学生的总分数和平均分数

常规的做法:

<?php

/**
* @Author: 吾爱乐享
* @Date: 2018-09-17 22:16:42
* @Last Modified by: 吾爱乐享
* @Last Modified time: 2018-09-17 22:33:03
*/
//求学生的总分数和平均分数
//常规的做法
$yuwen = 70;
$shuxue = 90;
$yingyu = 50;
$tiyu = 100;
$sum = $yingyu + $shuxue +$yingyu + $tiyu;
$ave =$sum / 4;
echo “总分数为:{$sum},平均分数:{$ave}”;

数组的做法:

<?php

/**
* @Author: 吾爱乐享
* @Date: 2018-09-17 22:16:42
* @Last Modified by: 吾爱乐享
* @Last Modified time: 2018-09-17 22:33:03
*/
//求学生的总分数和平均分数
//数组的做法
$arr = array($yingyu, $shuxue, $yingyu, $tiyu);
$sum = 0;
$num = 0;
for($i = 0; $i<count($arr); $i++){
$sum += $arr[$i];//总分数
$num++;//总的科目数
}
$ave = $sum / $num;//平均分数
echo “总分数为:{$sum},平均分数:{$ave}”;

2.数组的创建

数组有三种创建方式:

  1. 变量 = array(元素1,元素2,元素3,……);
  2. 变量 = array(元素的值1,元素的值2,元素的值3,…..);
  3. 变量[下标] = 值;
//数组的创建
//方式一:变量 = array(元素1,元素2,元素3,......);
$arr1 = array('name' => '张三', 'age' => 23, 'sex' => '男');
echo '方式一:<br>';
var_dump($arr1);
//方式二:变量 = array(元素的值1,元素的值2,元素的值3,.....);
$arr2 = array('李四', 24, '男');
echo '方式二:<br>';
var_dump($arr2);
//方式三:变量[下标] = 值;
$arr3['name'] = '王五';
$arr3['age'] = 25;
$arr3['sex'] = '女';
echo '方式三:<br>';
var_dump($arr3);

数组的注意事项

  1. 元素是由下标组成,也称键值对
  2. 下标是每个数据值的对应的名称,一个数组中可能有相同的值,用下标来定位和区分对应的值
  3. 下标可以自定义也可以系统自动生成,自定义的下标的数组称为关联数组,系统生成的数组称为,索引数组,索引数组是的下标是从0开始的
  4. 如果自定义了下标,就会按照自定义的下标区分数据,没有下标的就从0开始依次递增
  5. 如果其中定义了一个数字,那么这个数组后面的数据的下标就从定义的这个数字开始依次递增
  6. 下标又称索引键名,index和offset
  7. 数值也称键值,数组中数值的数据类型为8种
  8. 数组的覆盖,在同一个数组中,如果后面的元素中的下标和前面元素的下标重复了,那么后面的元素的值就会覆盖前面的元素值
  9. 数组的自增,在一个已知的数组中添加新的元素,$旧的数组变量名[] = 新的元素
  10. 数组分为索引数据和关联数组和混合数组
    1. 索引数组:下标都是数字,且连续的递增的方式
    2. 关联数组:下标都是字符串
    3. 混合数组:既有数字又有字符串

全部案例代码:

[erphpdown]

//1.元素是由下标和值组成,也称键值对
$array1 = array('1' => '张三','2' => '李四');//等号前面的1和2表示键名,后面的张三和李四表示的键值
echo '注意1:<br>';
var_dump($array1);
//2.下标是每个数据值的对应的名称,一个数组中可能有相同的值,用下标来定位和区分对应的值
$array2 = array('1' => '吾爱乐享', '2' => '吾爱乐享' );//键值相同,用键名来区分
echo '注意2:<br>';
var_dump($array2);
//3.下标可以自定义也可以系统自动生成,自定义的下标的数组称为关联数组,系统生成的数组称为,索引数组,索引数组是的下标是从0开始的
$array3 = array ('name' => '张三', '李四');//可以自定义也可以不定义
echo '注意3:<br>';
var_dump($array3);
//4.如果自定义了下标,就会按照自定义的下标区分数据,没有下标的就从0开始依次递增
$array4 = array('11','22','33','44');//不定义系统自动生成以0开始自动递增
echo '注意4:<br>';
var_dump($array4);
//5.如果其中定义了一个数字,那么这个数组后面的数据的下标就从定义的这个数字开始依次递增
$array5 = array('11','22',10 => '33','44','55');//第三个定义了下标10,那么后面的下标自动就i从11开始地址
echo '注意5:<br>';
var_dump($array5);
//6.下标又称索引和键名,index和offset

//7.数值也称键值,数组中数值的数据类型为8种
$array7 = array('张三',23,null,$arr1,3.14,true);
echo '注意7:<br>';
var_dump($array7);
//8.数组的覆盖,在同一个数组中,如果后面的元素中的下标和前面元素的下标重复了,那么后面的元素的值就会覆盖前面的元素值
$array8 = array('1' => '11','2' => '22','3' => '33','1' => '44');//后面的44就会覆盖前面的11,因为下标相同
echo '注意8:<br>';
var_dump($array8);
//9.数组的自增,在一个已知的数组中添加新的元素,$旧的数组变量名[] = 新的元素
$array9 = array(11,22,33,44,55);
$array9 = array(6 =>66,77,88,99);//如果不定义下标的话是从0开始,就会覆盖之前的内容,要新增,就需要定义和之前不一样的下标
echo '注意9:<br>';
var_dump($array9);
//10.数组分为索引数据和关联数组和混合数组
//10.1索引数组:下标都是数字,且连续的递增的方式
$array10 = array(11,22,33,44,55,66);
echo '注意10:<br>';
var_dump($array10);
//10.2关联数组:下标都是字符串
$array11 = array('num1' => 11,'num2'=>22,'num3'=>33);
echo '注意10:<br>';
var_dump($array11);
//10.3混合数组:既有数字又有字符串
$array12 = array('name' => '张三', 23);
echo '注意10:<br>';
var_dump($array12);

[/erphpdown]

php学习之函数的常见用法

吾爱乐享阅读(1839)

函数:

把一个或一些功能进行封装,然后走可以在任何地方去使用。分为自定义函数系统函数

1.普通函数

自定义函数语法:

function 函数名 ([形参列表]){

函数体;

[return 返回值];

调用函数:直接使用函数名();

只要调用函数都会开启新栈,来运行函数代码

2,可变函数

把一个变量的值当成函数的名,

如何实现:

在变量的后面加括号,变量一但加上括号系统就会解析成函数

$a=’b’;

$a();//此时的就相当于$a=b();

3.匿名函数

就是没有名字的函数

如何实现:

把这个函数赋值给变量,通过可变函数方式调用

$a = function(){

函数体;

}

$a();

4.回调函数

在一个函数内部调用另一个函数

function a(){

b();

}

function b(){

echo 1;

}

a();//调用函数

或者

function a($b){

$b();

}

function b(){

echo 1;

}

a(‘b’);//调用函数,把值b传给$b,调用$b(),就相当于$b=b();

5.匿名函数

把一个函数直接当作实参传递

function a($b){

$b();

}

a(function() {

echo 1;

});

6,内部函数

在一个函数内再次定义函数,这时候内部函数只能在函数内使用,要想在外部调用内部函数,必须先调用外部函数在调用内部函数

function a(){

function b (){

echo 1;

}

b();

}

a();

7.递归调用

调用的一种方式,也叫一种思想,在函数内部再次调用自己

前提是有条件的并且需要考虑退出条件的调用,二者缺一不可,否则进入死归

function a(){

if(条件语句){

a(退出条件);

}

函数体

}

a();//调用函数

php学习之网站布局方式【案例全过程】

吾爱乐享阅读(2621)

网站布局方式:

代码实现:

1.创建目录

2.创建配置文件,在config目录下新建一个conn.php文件

<?php
/**
* @Author: 吾爱乐享
* @Date: 2018-09-09 21:45:08
* @Last Modified by: 吾爱乐享
* @Last Modified time: 2018-09-09 22:25:10
*/
//配置文件
//设置编码
header("Content-type:text/html;charset=utf-8");
//配置网站目录结构
define('ROOT',substr(str_replace('\\','/',__DIR__),0,-6));//网站根目录
define('STYLE_ROOT',ROOT . 'style/');//样式文件路径
define('JS_ROOT' , ROOT . 'js/');//js文件路径
define('IMAGES_ROOT' , ROOT . 'images/');//图片文件路径
define('LIB_ROOT' , ROOT . 'lib/');//工具库文件路径
define('TEMPS_ROOT', ROOT . 'temps/');//模板文件路径
define('TEMPS_HOME_ROOT' , TEMPS_ROOT . 'home/');//前端文件路径
define('TEMPS_ADMIN_ROOT' , TEMPS_ROOT . 'admin/');//后端文件路径
//配置数据库连接信息
$link = array(
'host' => 'localhost',
'root' => 'root',
'pass' => '',
'charset' => 'utf8',
'dbname' => 'student'
);

3.实现功能-封装函数

4.引入文件

 

php学习之函数的其他函数的使用

吾爱乐享阅读(2495)

1。可变函数

说明:就是一个变量如果加上括号,php的系统就会解析成函数,这个变量的值必须是一个函数的名。否则报错,未定义

案例:

2,回调函数

说明:在一个函数中调用另一个函数,这时候称为回调

案例:

3.匿名函数

说明:匿名函数就是没有名称的函数,这时候就需要一个变量来存储函数

案例:

4,内部函数

说明:在一个函数内部在定义一个函数,这个时候,里面的函数只能在函数内使用,不能在函数外部使用,防止外链调用函数,这种方式的函数不多,面向对象都是这中方式

案例:

5.递归思想

说明:在一个函数内部再次有条件的调用自己(当前函数),这个时候就称为递归调用,即自己调用自己

案例:

注意:

1,递归调用必须有个可以退出的条件,否则无法退出递归调用,就会成为死循环,也就是说必须逐渐的退出

2,在递归调用时每次调用一次函数都开辟一个新的栈,这些栈是没有关系的

案例:

每个数据都是由前面的两个数字的和,第一个和第二个除外1,1,2,3,5,8,13,21,34….通过索引查找对应的数

php学习之函数的认识及相关细节

吾爱乐享阅读(2538)

1.函数的介绍

说明:函数的作用在于对一个功能的封装,封装后在别的页码中引入并调用,可以节省代码量

语法:

function 函数名 ( [形参1][,形参2][,形参3][,形参4][,形参n]){

要封装的函数的代码;

[return 返回值];

}

2,函数的调用

说明:直接使用需要调用的函数的名即可

语法:

函数名([实参1][,实参2][,实参3][,实参4][,实参n]);

3.函数的相关细节

  1. 函数定义时的形参不是一个具体的数值,而是需要接收实参传过来的值,且形参必须是变量
  2. 形参可以给默认值,且可以是多种数据类型
  3. 实参就是要给函数传递数据的值。可以是具体的值。也可以是变量。实参必须和形参一一对应
  4. 函数名遵循变量的定义规则。字母、下划线、数字且不能以数字开头
  5. 函数名不能重复
  6. return返回值,如果写了就会返回当前要返回的值,如果没写默认返回一个1或者null
  7. return可以返回多个值,即可以返回一个数组
  8. 返回值必须使用一个变量到函数的调用者这个位置进行接收
  9. 可以利用数组传递多个值
  10. 函数的变量称为局部变量,不能在函数外使用

说明:

2.函数的调用机制

说明:

  1. 函数的调用者把实际的数据传递给函数的形参,这时候的形参只能在函数内使用
  2. 函数在运行代码时会新建一个新的空间来运行函数内的代码
  3. 运行代码后,如果有返回值,把结果返回给函数调用者,这时候运行的函数新的空间被销毁

图解:

引用传递

说明:有的函数可以直接使用全局变量。这时候是引用传递

案例:

php学习之流程控制中break和continue的区别,include和require的区别

吾爱乐享阅读(2451)

break,跳出循环

说明:break的作用是退出for、while、dowhile、switch语句

案例:输出1-100在50的时候退出

  • list():获取数组中的元素的值,存储到list中的变量中。每个值必须匹配一个变量,
    list() 不能对字符串起作用,如:list($a)=”avb”;,结果返回null

each():获取数组中的键值对,并将指针下移、返回值中

0key 包含有数组单元的键名,1value 包含有数据。

说明:list($k,$val) = each($arr)

  • $k获取的是0索引所对应的值,each返回值中0索引对应的时键名,所以$k 返回的结果就是键名
  • $val获取的是1索引所对应的值,each返回值中1索引对应的时键值,所以$val 返回的结果就是键值

continue:跳过某次循环

说明:跳过某次循环

案例:输出1-100在50的时候跳过

 

 

break和continue的区别

break是直接结束当前循环,而continue是跳过当次循环继续执行

这两个用法都有一个设置数字的方式,默认为1。如break 数字; continue 数字

数字代表退出或跳过几个循环,用在多循环嵌套中,如果循环不够会报错,比如有两个循环嵌套,而后面的数字写的时3,此时就会报错

两个循环,设置3次跳出,此时会报错

goto语句

说明:goto语句就是在页面中的不同位置进行跳转

语法:

goto 标识名;

代码;

标识名:

案例:

死循环案例:

return语句

说明:return可以在函数中使用,也可以在页面中其他位置使用

如果是在函数中,作用是停止当前函数的运行,还可以返回函数内的值

如果是在页面中使用,作用是停止当前页面的运行

可以作为一个文件的返回数据来使用,经常用用在配置文件中

文件引入

说明:文件的加载可以是php文件也可以是html文件

加载的方式:

  • include
  • require
  • include_once
  • require_once

加载进来是两种结果:文件内容加载进来并运行、获取return的数据

  • 如果是加载内容:include’要加载进来的文件路径’;
  • 如果是数据:include(‘要加载进来的文件路径’);

案例:

加载内容

获取数据

路径:必须写文件夹目录,必须写完整的路径(不需要自己填写,可以使用__DIR__获取),网站目录必须是绝对路径,目录的文件可以相对路径

include和require的区别

错误级别不一样,造成了运行出错后的结果不一样

  • include出现错误,不影响代码的运行
  • require如果出现错误,会影响代码的运行,不在继续执行

加once和不加once 的区别

  • 加once:不管引入一个文件多少次,都只会引入一次
  • 不加once:引用多次文件,就执行多少次

 

php学习之流程控制中循环结构

吾爱乐享阅读(1784)

1.循环结构之while循环

语法:

变量初始化;

while(条件表达式){

循环体;

变量的变化;

说明:

  • 变量的初始化:这个初始化的值可以是任何一个数字
  • 条件表达式:只有条件为true才会重复循环内容代码
  • 变量的变化:给循环退出指定的条件

案例:输出1-100

案例:99除法表

2.循环结构之do…while循环

语法:

变量初始化;

do{

循环体;

变量的变化;

}while(条件表达式);

注:while结尾需要分号结束

注意:do…while循环不管条件是否达成,都会运行一次循环体中的代码

案例:打印1-100

案例:99乘法表

3.循环结构之for循环

语法:

for(变量初始化;条件表达式;变量的变化){

循环体

案例:打印1-100

for循环中变量的初始化、条件表达式、变量的变化可以同时写多个,每个用逗号隔开

案例:有一百块钱,需要买100只鸡,已知公鸡3元1只,母鸡5元1只,小鸡1元3只,求有几种方法购买,每种购买的公鸡母鸡小鸡各多个?

循环打印*号的各种形式案例

1.打印四行四列矩形

2.三角形

3.三角形1357变化

4.正三角形

5.正三角形,中间为空

6.正三角形,中间为空,底部闭合

7.打印菱形

8.漏斗

//三角形
for ($i=0; $i < 4; $i++) { 
for ($j=0; $j <= $i; $j++) { 
Echo '*&nbsp;';
}
echo '<br>';
}
echo '<hr>';
//三角形1357变化
for ($i=1; $i <= 4; $i++) { 
for ($j=1; $j <= $i*2-1; $j++) { 
Echo '*&nbsp;';
}
echo '<br>';
}
echo '<hr>';
//正三角形
for ($i=1; $i <= 4; $i++) { 
for ($k=4; $k > $i; $k--) { 
echo '&nbsp;';
}
for ($j=1; $j <= $i; $j++) { 
Echo '*&nbsp;';
}
echo '<br>';
}
echo '<hr>';
//正三角形,中间为空
for ($i=1; $i <= 4; $i++) { 
for ($k=4; $k > $i; $k--) { 
echo '&nbsp;';
}
for ($j=1; $j <= $i*2-1; $j++) { 
if($j==$i*2-1|| $j==1){
Echo '*&nbsp;';
}else{
echo '&nbsp;';
}

}
echo '<br>';
}
//正三角形,中间为空,底部闭合
for ($i=1; $i <= 4; $i++) { 
for ($k=1; $k <=4 - $i; $k++) { 
echo '&nbsp;';
}
for ($j=1; $j <= $i*2-1; $j++) { 
if($j==$i*2-1 || $j==1||$i==4){
Echo '*';
}else{
echo '&nbsp;';
}

}
echo '<br>';
}
//打印菱形
for($i=1;$i<=4;$i++){
for($k=1;$k<=4-$i;$k++){
echo '&nbsp;';
}
for($j=1;$j<=$i*2-1;$j++){
if($j==$i*2-1 || $j==1){
echo '*';
}else{
echo '&nbsp;';
}
}
echo '<br>';
}
for($i=3;$i>=1;$i--){
for($k=1;$k<=4-$i;$k++){
echo '&nbsp;';
}
for($j=1;$j<=$i*2-1;$j++){
if($j==$i*2-1 || $j==1){
echo '*';
}else{
echo '&nbsp;';
}
}
echo '<br>';
}
//漏斗
for($i=4;$i>=2;$i--){
for($k=1;$k<=4-$i;$k++){
echo '&nbsp;';
}
for($j=1;$j<=$i*2-1;$j++){
if($j==$i*2-1 || $j==1 || $i==4){
echo '*';
}else{
echo '&nbsp;';
}
}
echo '<br>';
}
for($i=1;$i<=4;$i++){
for($k=1;$k<=4-$i;$k++){
echo '&nbsp;';
}
for($j=1;$j<=$i*2-1;$j++){
if($j==$i*2-1 || $j==1 || $i==4){
echo '*';
}else{
echo '&nbsp;';
}
}
echo '<br>';
}

php学习之流程控制中分支结构

吾爱乐享阅读(2526)

说明:流程控制分为分支结构和循环结构

分支结构包括:

  • if
  • else
  • elseif
  • 流程控制的替代语法
  • switch

分支结构中的if语句

语法:

if(条件表达式){

达成条件运行的代码;

}

案例:做一个1-10的随机数,如果在5以内就打印

分支结构中的ifelse语句

语法:

if(条件表达式){

达成条件运行的代码

}else{

没有达成条件运行的代码

}

案例:如果在5以内则打印小,5以上打印大

分支结构中的ifelseif

语法:

if(条件表达式1){

达成条件1运行的代码

}elseif(条件表达式2){

达成条件2运行的代码

}[,else{

以上都没有达成运行的代码

}

]

注:随机数范围越大,出现的概率越大,

案例:狗和猫,通过随机数来获取数量,如果狗大于猫,一嘴猫毛,如果狗小于猫,一嘴狗粮,如果相对,就是猫狗大战

分支结构中的switch语句

语法:

switch(表达式){

case 条件1:

达成条件1的语句;

break;

case 条件2:

达成条件2的语句;

break;

….

default:

都没有达成运行的代码;

}

案例:判断星期几,取模给星期数

案例:成绩判断60分以下不及格,60-80良好,80-100优秀

分支结构的替代语法

if的替代语法:

if(条件表达式):

运行的代码

endif;

ifelse的替代语法:

if(条件表达式):

达成条件的代码

else:

没有达成条件的代码

endif;

ifelseif替代语法

语法:

if(条件表达式1):

达成条件2的代码

elseif(条件2):

达成条件2执行的代码

[,else:

都没有达成的代码

]

endif;

switch的替代语法

语法:

switch(表达式):

case 条件1:

达成条件1执行代码

break;

case 条件2:

达成条件2的代码

break;

….

default:

都没有达成的代码

endswitch;

 

php学习之二进制的基础相关知识

吾爱乐享阅读(2634)

说明:二进制是由1和0构成的一个32位的数字,逢二进一

二进制:0和1

00000000 00000000 00000000 00000000

例如:10进制的5对应的二进制为:

00000000 00000000 00000000 00000101

所谓的进制就是进位制:是人们规定的一种进位方式,对于任何一种进制,表示某一位置上的数运算时 缝几进1

  • 十进制:逢十进一
  • 八进制:缝八进一
  • 二进制:逢二进一
  • 十六进制:缝十六进一

二进制:是由数字0和1组成

八进制:由0,1,2,3,4,5,6,7组成

十进制:由0,1,2,3,4,5,6,7,8,9组成

十六进制:由0-9以及a,b,c,d,e,f组成

二进制数在系统中,位叫做bit,也称位比特,每个二进制数0或1就是一个位(bit)

位是数据存储的最小单位,其中8bit也称位一个字节(byte)

  • 1b(byte)=8bit
  • 1kb=1024b=2^20b
  • 1mb=1024kb=2^20b
  • 1gb=1024mb=2^30b
  • 1tb=1024gb=2^40b
  • 1pb=1024tb=2^50b

十进制和二进制的转换

十进制转二进制

对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次的商的整数部分作为被除数并依次记下每次的余数,另外,所得的商最后一位余数是所求二进制的最高位

口诀:先写商在写余,无余数则写零

得出的结果反向写出来

10的二进制:1010

二进制转十进制

进制数第0位(最后一个)的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方.第n位则是2的n次方,最后结果求和

比如:111011转十进制

从后往前数

第0位     1        1*2^0=1

第1位     1        1*2^1=2

第2位     0        0*2^2=0

第3位     1        1*2^3=8

第4位     1        1*2^4=16

第5位     1        1*2^5=32

结果最后求和:1+2+0+8+16+32=59

所以二进制111011的十进制为59

总结出来的公式为:n*2^n的结果求和

原码、反码、补码

说明:在计算机中CPU操作的都是补码,原因是因为整数分负数和正数

二进制的最高位:0是正数(正符号位(最高位)为0),1是负数(负数符号位(最高位)为1)

正数的原码、补码、反码都是一样

负数的反码:按位取反,符号位不变

负数的补码:在反码的基础上加1

按位运算的二进制表现形式

按位与 :&  都为1的结果设为1

$a & $b

10 & 20

10的补码:00000000 00000000 00000000 00001010

20的补码:00000000 00000000 00000000 00010100

结果为:    00000000 00000000 00000000 00000000

转为十进制位:0

按位或:|  其中一个为1结果就为1

$a=10 $b=20

$a | $b

10的补码:00000000 00000000 00000000 00001010

20的补码:00000000 00000000 00000000 00010100

结果为:    00000000 00000000 00000000 00011110

转换为十进制:16+8+4+2+0=30

负数:

$a=-10 $b=-20

$a | $b

-10的原码:10000000 00000000 00000000 00001010
-10的反码:11111111 11111111 11111111 11110101
-10的补码:11111111 11111111 11111111 11110110

-20的原码:10000000 00000000 00000000 00010100
-20的反码:11111111 11111111 11111111 11101011
-20的补码:11111111 11111111 11111111 11101100

-10的补码:11111111 11111111 11111111 11110110

-20的补码:11111111 11111111 11111111 11101100

结果补码:  11111111 11111111 11111111 11111110

结果反码:  11111111 11111111 11111111 11111101

结果原码:  10000000 00000000 00000000 00000010

转换为十进制:-2

按位非:~  按位取反

$a=-3

~$a

-3的原码:10000000 00000000 00000000 00000011

-3的反码:11111111 11111111 11111111 11111100

-3的补码:11111111 11111111 11111111 11111101

按位非   :10000000 00000000 00000000 00000010(按位非负数符号位不变,其他取反,得到的是按位非的补码)

按位非反码:11111111 11111111 11111111 11111101

按位非原码:00000000 00000000 00000000 00000010

转为十进制:2

 

 

负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算
10010110是补码,符号位与最后一个1之间的所有数字按位取反,得11101010

 

php学习之php的位运算符及数组运算符的使用

吾爱乐享阅读(2757)

位运算符说明:

说明:就是对位进行操作,位说的是二进制的每个位,二进制共有32位,位是由1 和0 构成

  • &:按位与
  • |:按位或
  • ~:按位非
  • ^:按位异或
  • <<:按位左移
  • >>:按位右移

&:按位与

都为1的时候结果为1,其他都为0

1&1=1

1&0=0

0&1=0

0&0=0

|:按位或

其中有一个1结果就为1

1|1=1

1|0=1

0|1=1

0|0=0

~:按位非

取反

~1=0

~0=1

^:按位异或

只有期中一个为1,结果为1

1^0=1

0^1=1

1^1=0

0^0=0

<<:左移

左移的位数:5<<3

表示:5这个数移动3位,左边的可以认为删除,右边用0补齐

0000000000000101//5的二进制

0000000000101000//左移3位之后的值

>>:右移

移动的位数:5>>3

表示:5这个数移动3位,左边的用0补齐,右边可以认为删除

0000000000000101//5的二进制

0000000000000//右移3位之后的值

注意:位运算都是对整数操作,操作的都是10进制,只不过cpu以二进制运算的

数组运算符

说明:就是对数组进行操作的方式

  • $a+$b:联合,$a和$b的联合
  • $a==$b:相等,$a和$b具有相同的键值对,结果才为真
  • $a===$b:全等,$a和$b具有相同的键值对,且顺序和类型都必须相同,结果才为真
  • $a!=$b、$a<>$b:不等,$a不等于$b,结果为真
  • $a!==$b:不全等,$a不全等于$b,结果为真

说白了就是三种,联合(+)、等于(==、===)、不等于(!=、!==)

+:联合。就是把第二个数组和并到第一个数组中,如果是索引数组第二个数组的下标和第一个相等,就无法合并,,如果是关联数组,后边的会继续加上,如果索引相同,默认显示第一个数组的值

运算符的优先级

说明:括号优先,赋值最后

 

推荐免费资源共享,个人经验总结学习

联系我们联系我们