(小白)PHP基础学习001 20201001

(小白)PHP基础学习001 20201001

历程

1.echo 打印

<?php
$a=100;
echo 'HelloWorld',$a;
?>

HelloWorld100

  1. unset
<?php
$a=100;
unset $a;
echo 'HelloWorld',$a;
?>

报错:


Parse error: syntax error, unexpected '$a' (T_VARIABLE), expecting '(' in /box/script.php on line 3


Exited with error status 255
  1. 变量命名、
    可以中文命名,但不建议、
<?php
$中国='china';
echo 'HelloWorld ',$中国;
?>

结果:

HelloWorld china
  1. 预定义变量:
$_GET:获取所有表单以get方式提交数据
$_POST:POST提交的数据都会保存在此
$_REQUEST:GETPOST提交的都会保存
$_GLOBALS:PHP中所有的全局变量
$_SERVER:服务器信息
$_SESSION:session会话数据
$_COOKIE:cookie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
  1. 可变变量
<?php
$a='b';
$b='bb';
echo $a," ";
echo $$a;
?>

结果:

b bb

这就相当于$ a = a= a=( a ) = a)= a)=b
延伸拓展:

<?php
$a='b';
$b='bb';
$bb='bbb';
echo $a," ";
echo $$a," ";
echo $$$a;
?>

结果:

b bb bbb

有兴趣的可以用个for循环试试

  1. 变量传值
    将一个变量赋值给另一个变量
    第一种:值传递,两个变量没关系
<?php
$a=1;
$b=$a;
$b=2;

echo $a," ",$b;

?>

结果

1 2

第二种:引用传递,两个变量指向同一个内存空间

<?php
$a=1;
$b=&$a;
$b=2;

echo $a," ",$b;

?>

结果

2 2

内存中,通常有几个分区:
栈区:程序可以操作的内存部分(不存数据,运行程序代码),少但是快
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态)
堆区:存储复杂数据,大但效率低

  1. 换行(未成功)
<?php
$a=1;
$b=2;
echo $a,$b,"<br/>";

?>

结果:

12<br/>

具体原因不知道,我是在线编辑的,回头可以在其它方面测试或者了解一下

  1. 常量定义
<?php
define("PI",3.14);
const PII=3;

echo PI," ",PII
?>

结果:

3.14 3

常量通常以大写字母,与变量进行区别,前面不能加 , 加 ,加 后就被认为是变量

区别:
特殊符号:

define("-_-",3.14);//这种方式可行
const -_-=3;  //这种方式不行

像上面的方式-_-不能直接使用,而必须用constant的方式访问常量:

<?php
define("-_-",3.14);//这种方式可行
//echo -_- //报错
echo constant('-_-');


?>

结果:

3.14

数据不允许被修改的,一定用常量

  1. 常用的几个系统常量
PHP_VERSION:PHP版本号
PHP_INT_SIZE:整形所占用字节数,整形大小
PHP_INT_MAX:整形能表示的最大值(PHP中整形是允许出现负数:带符号)
<?php
echo PHP_VERSION," ",PHP_INT_SIZE," ",PHP_INT_MAX;
?>

结果:

7.4.1 8 9223372036854775807
  1. 魔术常量
    双下划线开始+常量名+双下划线结果
    魔术常量的值通常会跟着环境变化,但是用户改变不了,只能看着它变化
__DIR__:当前被执行的脚本所在电脑的绝对路径
__FILE__:当前被执行脚本所在的电脑的绝对路径(带自己文件的名字)
__LINE__:当前所属的行数

__NAMESPACE__:当前所属的命名空间
__CLASS__:当前所属的类
__METHOD__:当前所属的方法
//等等
<?php
echo __DIR__," ";
echo __FILE__," ";
echo __LINE__," ";
?>

结果:

/box /box/script.php 4    
  1. 数据类型
    数据类型:data type 在PHP中指的是存储的数据本身的类型,而不是变量的类型,PHP是一种弱类型语言,变量本身没有数据类型

PHP的八种类型
三大类,八小类
简单(基本数据类型):4小类
整型:int/integer,系统分配4个字节,表示整数类型(有前提)
浮点型:float/double,系统分配8个字节存储,表示小数或者整型存不下的整数
字符串:string,系统根据实际长度分配,表示字符串(引号)

复合数据类型:2个小类
对象类型:object,存放对象(面向对象)
数组类型:array,存储多个数据(一次性)

特殊数据类型:2个小类
资源类型:resource,存放资源数据(PHP外部数据,如数据库,文件)
空类型:NULL,只有一个值是NULL(不能运算)

  1. 类型转换
    在很多条件下,需要指定的数据类型,需要外部数据(当前PHP取得的数据)
    转换方式:
    自动转换:
    系统根据需求自己判定,自己转换(用的比较多,效率偏低)
    强制(手动转换):认为根据需要的目标类型转换

  2. 类型判断

PHP类型比较表
https://www.php.net/manual/zh/types.comparisons.php
在这里插入图片描述
这里的isset()指是的数据是否存在
在这里插入图片描述

在这里插入图片描述

其它类型转数值的说明:

布尔true为1,false为0
字符串转数值有自己的规则
以字母开头的字符串,永远为0
以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)

  1. 强制转换
    在变量前增加一个括号(),然后在里面写上对应的类型:int/integer_其中NULL类型需要用到unset()
<?php
$a="abc1.1.1";
$b="1.1.1abc";
//自动转换
//echo $a+$b; 直接运行会报错
echo (float)$a," ",(float)$b;
?>

结果

0 1.1

需要注意的是,在这里的两个字符串是不能直接相加的:

<?php
$a="abc";
$b="def";
echo $a+$b
?>

Warning: A non-numeric value encountered in /box/script.php on line 4

Warning: A non-numeric value encountered in /box/script.php on line 4
0

bool类型无法用echo来查看,因为打印出来的True不能确定是布尔型还是string

<?php
$a=TRUE;
echo $a
?>

结果是:

1

类型判断
is_***()=>这里的***是类型,比如:is_NULL

<?php
$a=TRUE;
echo is_bool($a)," ";
$b=FALSE;
echo is_bool($b);
?>

结果:

1 1

可以用jvar_dump结果查看:

<?php
$a=TRUE;
var_dump(is_int($a));
var_dump(is_bool($a));
?>

结果:

bool(false)
bool(true)
  1. 获取以及设定数据的类型

gettype()
settype():与强制转换不同
强制转换(类型)变量,是对数据值复制的内容进行处理(不会处理实际存储的内容,也就是原数据不变,而settype()会改变数据本身)

<?php
$a='123abc';
//强制转换
echo (int)$a," ";
echo gettype($a)," ";

//settype()
echo settype($a,"int")," ";
echo gettype($a);
	
?>

结果:

123 string 1 integer

  1. 整数类型

整数类型,4个字节存储数据,最大就是32位,42亿多,但PHP中默认是有符号类型(区分正负数),所以一般是正,一半是负
PHP中提供了四种整型定义方式:
十进制,二进制,八进制和十六进制

<?php
$a=100;//10进制;
$b=0b110; //2进制;
$c=0110; //8进制
$d=0x110; //16进制

echo $a," ",$b," ",$c," ",$d
	
?>

结果:

100 6 72 272

在PHP的输出中,默认所有的输出都是十进制,所以都会自动转为十进制

  1. 浮点型

浮点型,小数类型以及超过整型所能存储范围的整数(不保证精度),精度范围大概在15个有效数字左右。

<?php
$f1=1.23;
$f2=1.23e10;
var_dump($f1,$f2);
	
?>

结果:

float(1.23)
float(12300000000)

衍生:

<?php
$f1=1.23;
$f2=1.23e10;
$f3=PHP_INT_MAX+1;
var_dump($f1,$f2,$f3);
	
?>
float(1.23)
float(12300000000)
float(9.2233720368548E+18)

原本f3是整型,但因为超出了自身的范围,所以变成了浮点型

结果:

float(1.23)
float(12300000000)
float(9.2233720368548E+18)

尽量不用浮点数做精确判断,浮点数保存的数据不够精确,而且在计算机凡是小数基本上存的都不准确

<?php
$f1=0.7;
$f2=2.1;
$f3=$f2/3;
var_dump($f3==$f1);
	
?>

结果:

bool(false)

按我们正常计算,结果应该是true,但电脑存在浮点的误差,所以结果是false

  1. 布尔型
<?php
$f1=true;
$f2=FALSE;
var_dump($f1,$f2);
	
?>

结果:

bool(true)
bool(false)

Empty():判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false
Isset():判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false
具体见上面第13点,类型判断

  1. 判断
    在PHP中,123和"123"是可以判断相等的
<?php
$f1="123";
$f2=123;
var_dump($f1==$f2);
	
?>

结果:

bool(true)
  1. 连接运算符
    .:两接两个字符串
    .=:相当于a=a.b
<?php
$f1="abc";
$f2="def";
echo $f1.$f2
	
?>

结果:

abcdef
  1. 错误抵制符
    @:在可能出错的表达式前加上@
    生产的时候会用到,但在开发的时候基本不用,因为开发的时候希望把错误暴露出来
<?php
$f1=8;
$f2=0;
echo @($f1/$f2);
	
?>

结果:


INF

而如果没有@

<?php
$f1=8;
$f2=0;
echo $f1/$f2;
	
?>

Warning: Division by zero in /box/script.php on line 4
INF

  1. 三目运算符

表达式?表达式2:表达式3;
if_else_
这个和其它语言相同

  1. 自操作运算符
<?php
$a=1;
$a++;//前置自操作
echo $a," ";

$b=1;
++$b; //后置自操作
echo $b," ";
echo "==>";

$a=1;
$b=1;
echo $a++," ",++$b;//这里相当于先把a输出,然后再给a自身++,b则相反
echo "==>";


$a=1;
$c=$a++; //这里相当于先把a赋值给c,然后再给a自身++
echo $c," ";

$b=1;
$d=++$b; //这里相当于先把++b计算出来,然后再赋值给d
echo $d," ";
	
?>

结果:

2 2 ==>1 2==>1 2 
  1. 计算机码
    计算机码:计算机在实际存储数据的时候,采用的编码规则(二进制规则)

计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位;正数为0,负数为1

原码:数据本身从十进制转换成二进制得到的结果
正数:左边符号位为0(正数的原码,反码和补码就是原码本身)
负数:左边符号位为1
反码:针对负数,符号位不变,其他位取反
补码:针对负数,反码+1
系统中存在两个0,+0和-0
+0:00000000
-0:10000000

-0 取反:11111111
补码:0000000

<?php
//计算机码:
$a=5;
$b=-5;
/*
5原码:00000101
-5原码:10000101
取反:11111010
求补:11111011
*/
	
?>
  1. 位运算
    取出计算机中最小的单位(位bit)进行运算:
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1,否则为0
~:排位非,一个位如果为1,则变成0,否则反之
^:按位异或:两个相同则为0,不同则为1
<<:按位左移:整个(32位),向左移动一位,右边补0
>>:按位右移:整个(32位),向右移动一位,左边补相应的内容(正数补0,负数补1
<?php
//计算机码:
$a=5;
$b=-5;
/*
5原码:00000101
-5原码:10000101
取反:11111010
求补:11111011
*/
//系统进行任何位运算的时候都是使用的补码
//运算结束之后都必须转换成原码才是最终要显示的数据
var_dump($a & $b);
/*
 5:00000101
-5:11111011

 &:00000001
 
*/
var_dump(~$b);
/*
-5:11111011
取反00000100
原码00000100
 
*/

	
?>

结果:

int(1)
int(4)



  1. 运算符优先级

在这里插入图片描述

  1. 控制分类
<?php
$a=1;
$b=5;
if($a>$b){
	echo $a-1;
}elseif($a==$b){
	echo $a;
}else{
	echo $a+1;
}

	
?>

这里的elseif是这么写的

<?php
$a=1;
$b=5;
switch($a){
	case $a>$b:
		echo 'big';
		break;
	case $a==$b:
		echo 'equal';
		break;
	default:
		echo 'small';
		break;
}
	
?>

结果:

smal


这里有个default,上面的条件都不满足时,就会执行default

<?php
for($a=0;$a<10;$a++){
	echo $a," ";
}
echo "end:",$a;
	
?>

结果:

0 1 2 3 4 5 6 7 8 9 end:10

结果发现,for循环里的a在循环外也是可以调用的

<?php
for($a=0;$end=10,$a<$end;$a++){
	echo $a," ";
}
echo "end:",$a;
	
?>

结果同上
只是这里可以多放一个变量的设定$end=10

for循环的无限循环

<?php
for(;;){
	echo "hi ";
}
	
?>

可以在括号里一个条件都不放,但分号必须要有,这样就无限循环了

do while

<?php
$i=1;
do{
	if($i%2!=1){
		echo $i,"|";
	}
	$i++;
}while($i<=10)
?>

结果:

2|4|6|8|10|


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值