PHP基础学习(一)

目录

前提

基本语法

数据类型

1. 四种标量类型

Boolean 布尔类型

Integer 整型

Float 浮点型

String 字符串

2. 三种复合类型

Array 数组

Object 对象

Callback / Callable 可调用

3. 两种特殊类型

NULL 无类型

Resource 资源

变量

常量

运算符&表达式

流程控制

函数


前提

PHP运行环境,只是单纯的学习可以考虑安装PHP集成环境软件,比如PhpStudy,Xampp等软件,可以一步到位。

 

基本语法

<?php                    //PHP标记
    echo 'Hello,World!'; //输出"Hello,World!"
?>

 

数据类型

PHP变量中的数据类型不是由程序员设定的,而是由该变量使用的上下文运行时决定的。

echo:输出一个或多个字符串(只能打印标量类型)

var_dump():打印变量的值和类型

print_r():易于理解的格式打印变量,相较于echo,可以打印更多数据类型

 

1. 四种标量类型

Boolean 布尔类型

<?php

$a_bool = TRUE;
$b_bool = FALSE;

echo $a_bool; //输出1
echo $b_bool; //输出空


var_dump($a_bool); //输出bool(true)
var_dump($b_bool); //输出bool(false)


print_r($a_bool); //输出1
print_r($b_bool); //输出空


 

Integer 整型

<?php

$a_int = 333;

echo $a_int; //输出333

var_dump($a_int); //输出int(333)

print_r($a_int); //输出333

 

Float 浮点型

<?php

$a_float = 333.28;

echo $a_float; //输出333.28

var_dump($a_float); //输出float(333.28)

print_r($a_float); //输出333.28

 

String 字符串

<?php

$a_string = 'Hello';

echo $a_string; //输出Hello


var_dump($a_string); //输出string(5)"Hello"


print_r($a_string); //输出Hello

 

2. 三种复合类型

 

Array 数组

<?php

$a_array = array(1,333,333.28,'Hello');

echo $a_array; //输出报错

var_dump($a_array); //输出array(4) { [0]=> int(1) [1]=> int(333) [2]=> float(333.28) [3]=> string(5) "Hello" }

print_r($a_array); //输出Array ( [0] => 1 [1] => 333 [2] => 333.28 [3] => Hello )

Object 对象

<?php

class foo{
	
}
$bar = new foo;

var_dump($bar);//输出object(foo)#1 (0) { }

print_r($bar);//输出foo Object ( )

Callback / Callable 可调用

暂时空

 

3. 两种特殊类型

NULL 无类型

NULL与0的区别,NULL代表空,不占空间。0代表数值为0,占内存空间

<?php

$a_null = NULL;

echo $a_null; //不输出

var_dump($a_null); //输出NULL

print_r($a_null); //不输出

Resource 资源

暂时空

 

变量

 

1. 变量名的命名规则

以字母,数字,下划线构成,首字符不可以是数字。现在支持的更广泛,甚至汉字也可以当变量名,但是强烈不建议这样做。

 

2. 变量名,变量值和存储地址的关系

定义一个变量,内存首先会开辟一块空间,将变量值存入,存储空间的地址由变量名所指向。

"$a = 3"

 

3. 可变变量

一个变量的变量名可以动态的设置和使用,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

<?php

$who = $_GET['who'];

$user1 = "Lisa";
$user2 = "Mark";
$user3 = "Daine";

echo $$who;  //根据GET参数传的user1/user2/user3输出用户名

 

4. 变量类型的检测(内置函数的使用)

<?php

$a = 12;
$b = 12.5;
$c = false;
$d = NULL;
$e = '12.5';


if(isset($a)){        //isset()判断变量是否被定义
	echo gettype($a); //返回变量的数据类型  integer
}
if(is_float($b)){
	echo gettype($b);  //double
}
if(is_bool($c)){
	echo gettype($c);  //boolean
}
if(is_null($d)){
	echo gettype($d);  //NULL
}
if(is_string($e)){
	echo gettype($e); //string
}

 

5. 变量销毁

    unset()函数

<?php

$a = 12;

echo $a; //12

unset($a);

echo $a; //Undefined Variable

6. 变量的赋值方式

<?php

//1. 传值赋值

$a = 12;
$b = 15;
$a = $b;

echo $a,$b,'<br />'; //1515

//2. 引用赋值

$b = &$a;  //$b指向$a指向的内存空间
$a = 15;
$b = 12;
echo $a,$b,'<br />'; //1212

unset($a);

echo $a,$b,'<br />'; //NOTICE 12

 

常量

 

1. 常量命名方式

要求和变量相同,但习惯上用大写字母区别于变量

 

2. 常量定义

<?php

define('ZHU_MOUNTAIN',8848);

/*
define('ZHU_MOUNTAIN',8848.8); //ERROR 不能重复定义
ZHU_MOUNTAIN = 8848.8  //ERROR 不能再赋值
*/
FUNCTION EH(){
	echo ZHU_MOUNTAIN;  //全局有效性
}
EH();  //输出8848

 3.  常量的检测

<?php

//常量的检测
if(defined('ZHU_MOUNTAIN')){
	echo '常量HEIGHT已经定义';
}else{
	echo '常量ZHU_MOUNTAIN未定义,我来定义','<br />';
	define('ZHU_MOUNTAIN',8848);
}

if(defined('ZHU_MOUNTAIN')){
	echo '常量ZHU_MOUNTAIN已经定义,值是',ZHU_MOUNTAIN,'<br />';
}

4. 动态常量

<?php

$who = $_GET['who'];

define("USER1","Lisa");
define("USER2","Mark");
define("USER3","Daine");

echo constant($who);  //CONSTANT()函数返回常量值

 

运算符&表达式

 

算术运算符

<?php

$d = 5;
$e = 3;

echo $d + $e,'<br/>';  //8
echo $d - $e,'<br/>';  //2
echo $d * $e,'<br/>';  //15
echo $d / $e,'<br/>';  //1.66667  发生了类型转换(区别于C/Java等语言)
echo $d % $e,'<br/>';  //2  //取模结果的符号和被除数有关

赋值运算符

<?php

$a = $b = $c = 12;  //从右往左运算,依次赋值

echo $a,'~',$b,'~',$c; 


比较运算符

<?php

// >,>=,<,<=,==,!=,!==,=== 返回值均为bool型

$a = 2;
$b = "2";

if($a == $b){
	echo 'aaaaaa'; //输出aaaaaa	  
}
if($a === $b){
	echo 'bbbbbb'; //未输出			   
}

//"=="只表示值相同,"==="表示值和类型都相同

递增/递减运算符

<?php

$a = 1;

echo $a++; //1
echo $a--; //2
echo ++$a; //2
echo --$a; //1

逻辑运算符

<?php

/**************逻辑运算符*************************************
     &&(and),||(or),!,xor(异或运算符,表达式值相同返回0,否则返回1)
***************************************************************/

//三元运算符 条件?返回值1:返回值2

echo 20>=12 &&  6<12 ? 1 : 0;      //1
echo (20<12 and 6<12) ? 1 : 0;     //0  实际只执行了前半段,短路特性

echo 20>=12 || 6>12 ? 1 : 0;       //1    实际只执行了前半段,短路特性
echo (20<=12 or 6>12) ? 1 : 0;     //0

echo  !(6>12) ? 1 : 0;             //1
echo ((20>=12) xor (6<12) )? 1:0;  //0

字符串运算符

<?php

$str1 = "Hello";
$str2 = "World";

$str = $str1 . ' ' . $str2; //字符串拼接
echo $str; //Hello World

位运算符

<?php
//&,|,~,^,<<,>>

$a = 12;
$b = 5;

/*
	0000 1100
	0000 0101
&|^--------------

*/
echo $a & $b; //4(10) =0000 0100(2)
echo $a | $b; //13(10)=0000 1101(2)
echo ~$a;     //-13(10)=1111 0011(2) 涉及补码运算
echo $a ^ $b; //9(10)=0000 1001(2)
echo $a << 2; //48(10)=0011 0000(2)
echo $b >> 2; //1(10)=0000 0001(2)

 

流程控制

 

顺序语句

分支语句

<?php
/******

//条件语句解析:if满足条件1,执行语句段1,否则查看是否满足条件2,满足则执行语句段2,否则执行语句段3
//if-else判断有且仅有一段语句可以执行

*******/
if(条件1){
    语句段1;
}else if(条件2){
    语句段2;
}else{
    语句段3;
}

//switch--case:适和于不同值,执行不同语句的情况,对if..if else..else的简化

$day = 9;
switch($day){
	case 1:
		echo '星期一';
		break;
	case 2:
		echo '星期二';
		break;
	case 3:
		echo '星期三';
		break;
	case 4:
		echo '星期四';
		break;
	case 5:
		echo '星期五';
		break;
	case 6:
		echo '星期六';
		break;
	case 7:
		echo '星期七';
		break;
	default:
		echo '你来自火星';
}

循环语句

<?php

/******
while循环:满足条件1,则执行语句段,执行完后返回while判断,如果条件满足,继续执行,否则跳出循环
******/

while(条件1){
    语句段;
}
/******
do..while循环:相比于while,会先执行一次语句,然后判断
******/
do{
    语句段
}while(条件1);
/******
for循环:条件1一般是初始化,只执行一次,然后判断条件2是否满足,如果满足,执行语句段,最后执行条件3,一般是循环次数的变化,继续判断条件是否满足来执行语句段,不满足条件则跳出。
******/

for(条件1;条件2;条件3){
    语句段
}

//break强制跳出循环,continue结束本次循环,继续下一次循环

 

函数

1. 函数的声明和调用

<?php

//函数声明
function foo($a,$b,$c=4){   //$c设置了默认参数(需置到函数参数列表的最后)
    return $a+2*$b+3*$c;    //函数执行结果返回
}

//函数调用
$res = foo(1,2);

echo $res;

/******************/

$str = 'foo';
echo $str(1,2); //可变函数,函数名可用变量值


 

2.  函数的作用域

函数体内部变量属于局部变量,每次调用函数会申请内存空间,函数结束后再释放。

函数体内部不可以使用外部变量,除非用global引用全局变量。

3. 函数的引用传参

<?php

$a = 12;

function foo($num){
	return ++$num;
}

echo foo($a),$a; //1312

function foo2(&$num){
	return ++$num;
}

echo foo2($a),$a;//1313

4. 超级全局变量(可在任何地方引用)

$_GET:URL请求中传的参数

$_POST:表单提交传的参数

$_REQUEST:$_GET,$_POST,$_COOKIE的数组

$_FILES:文件上传用

$_COOKIE:用户登陆用

$_SESSION:用户登陆用

$_SERVER:服务器和访客信息

$_GLOBALS:所有全局变量的一个注册表

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章