PHP基础语法

php基础

变量

变量是用于存储值的,一般情况下一个变量只能装一个值,可以将变量想象是一个瓶子,值就是瓶子里面的水

  • 定义变量的方式:php中没有定义变量的关键字,但是在定义变量的时候变量名必须是$(美元符)开头,如:
<?php

$name = "alex"; // 定义一个变量
echo $name //输出
?>
  • php变量命名规则:

    • 变量名必须以字母或者下划线"_"开头
    • 变量名只能➡由字母,数字,以及"_"组成,也可以包含汉字,但是不建议使用汉字作为变量名
    • 变量名不允许包含空格,变量名包含多个单词组成,可以使用下划线法或者骆驼式命名法
    • 在php中变量名是明确区分大小写的
  • 变量的数据类型

在变量中,由于变量占用的空间单元不一样,也分成几种数据类型,可以使用"memory_get_usage"函数获取当前消耗的内存

<?php
// 获取当前消耗的内存
$c1 = memory_get_usage();
$name = 'alex';
$c2 = memory_get_usage() - $c1;
echo '变量name所占用的内存空间:'.$c2
?>

php是一个弱类型语言,在定义时不需要声明变量的类型,php会自动吧变量转换成自动的数据类型

<?php 
 $string = "就是就是";
 var_dump($string);  //使用var_dump查看变量的数据类型
 echo "<br />";
 $string = 9494; //自动将$string变量转换成int类型
 var_dump($string);
  echo "<br />";
?>

php标量类型:

字符串

  1. php中的字符串是用双引号括起来的一个词或者一个句子,比如"hello world",可以使用php语言输出echo 将字符串输出
<?php
// 定义一个$name变量
$name = 'alex';
// 输出$name变量
echo $name
?>
  1. php连接字符串的方式

在php中使用 . 连接两个字符串,与python或者javascript中使用+连接字符串不一样

<?php
// 定义变量
$name = 'alex';
$age = '20岁';

// 使用 . 连接字符串输出
echo '名字:'.$name.'年龄:'.$age

// output: 名字:alex年龄:20岁
?>
  1. php语句结束符号:每一条php代码航结尾处都会有一个分号;结束,并且分号;一定在半角状态下输入,否则会报错
  2. php的注释是双斜杠://
  3. 当引号遇上美元符号:
<?php
// 定义变量
$name = 'alex';
// 当引号遇上美元符号
echo '名字:$name';  //输出的是$name
echo "名字:$name"   //字符串格式化输出

?>

// output:
    名字:$name
    名字:alex
  1. 多行字符串

在赋值符号后,输入界定福"<<<",接着就是标识符(代码中的EOF)

//多行字符串
$content = <<<EOF
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
EOF;
echo $content;
?>

bool类型

布尔类型(boolean):只有两个值,一个是TRUE另一个是FALSE,bool不区分大小写,主要是用在条件结构

<?php
$man = '男';
$flag = $man == '男';
echo $flag;
var_dump($flag)

?>

整形

整形(integet):类似于常见的证书,可以用十进制,八进制,十六进制指定,十进制就是日常使用的水,八进制数字前必须加上"0",十六进制数字前必须加"0x"

<?php
$data_int = 1234;   // 十进制数 
$data_int = -567;    // 一个负数
$data_int = 0123;    // 八进制数(等于十进制的 83)
$data_int = 0x1a;    // 十六进制数(等于十进制的 26)
?>

浮点型

浮点型(浮点数,双精度数或实数),也就是通常说的消暑,可以用小数点或者科学计数法表示,科学计数法可以使用小写的e,也可以使用大写的E

<?php
$num_float = 1.234;    //小数点  
$num_float = 1.2e3;    //科学计数法,小写e  
$num_float = 7.0E-10;     //科学计数法,大写E  
?>

php第一种特殊类型--资源

资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽

例如:

<?php
$f = fopen('./content.txt','r'); //打开文件,第一个参数是文件名,第二个参数是打开类型
$conn = mysqli_connect('host','root','密码','数据库名');//数据库连接
$img = imagecreate(100,100)  //画布

?>

文件的简单操作:

<?php
$f = fopen('./content.txt','r'); //打开文件,第一个参数是文件名,第二个参数是打开类型
if ($f){ //判断f文件资源是否存在
    //接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
    while (!feof($f)){  //判断是否到最后一行
        $line = fgets($f); // 输出一行文本
        echo $line;
    }
}
?>

空类型

NULL(空):NULL是空类型,对大小写不敏感,null类型只有一个取值,表示一个变量没有值,当被赋值为null或者尚未被赋值,或者被unset(),这三种情况下被认为为null

<?php 
 error_reporting(0); //禁止显示PHP警告提示
 $var;
 var_dump($var);
 $var1 = null;
 var_dump($var1);
 $var2 = NULL;
 var_dump( $var2);
 $var3 = "节日快乐!";
 unset($var3);
 var_dump($var3);
// 输出的都是null
?>

自定义常量

常量是不变的量,在常量被定义后,在脚本的任意位置都不可以被改变,PHP中的常量分为自定义常量和系统常量

PHP自定义常量是根据我们开发的需要而定义的常量,可以使用PHP中的函数define()定义

define()函数的语法:

bool define(string $constant_name, mixed $value[, $case_sensitive = true])


<!--第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。-->

string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型

例:

<?php
$p = "PII";
define('PI',3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
?>

在使用常量的时候可以直接调用define()函数的第一个参数中的字符串调用,但是不可以进行更改.

PHP常量取值的第二种方式:constant(),使用这种方式更加的灵活

例1:

<?php
$name = 'alex';
define("NAME",$name);
echo NAME;

define("AGE",10);
echo AGE; // 第一种取值方式

echo constant("NAME")  //第二种取值方式
?>

例2:

<?php 
$p="";
//定义圆周率的两种取值
define("PI1",3.14);
define("PI2",3.142);
//定义值的精度
$height = "中";
//根据精度返回常量名,将常量变成了一个可变的常量
if($height == "中"){
    $p = "PI1";
}else if($height == "低"){
	$p = "PI2";
}
$r=1;
$area = constant($p)*$r*$r;
echo $area;
?>

使用defined(strinf constants_name)函数可以帮助我们判断一个常量是否已经被定义,这个函数如果只有一个参数constant_name指的是要获取常量的名称,若存在则返回布尔类型true,否则返回false

<?php 
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
?>

系统常量

系统常量是php已经定义好的常量,可以直接拿来使用过,常用的系统常量:

  1. FILE :php程序文件名,可以帮助获取当前文件在服务器的物理位置
  2. LINE:PHP程序文件行数,可以使用该常量获取当前代码在第几行
  3. PHP_VERSION:当前解析起的版本好
  4. PHP_OS:执行当前PHP版本的操作系统名称
<?php
echo __FILE__;
echo PHP_OS;
echo __LINE__;
echo PHP_VERSION;

?>

运算符

PHP运算符一般分为算数运算符,赋值运算符,比较运算符,三元运算符,逻辑运算符,字符串连接运算符,错误控制运算符

算数运算符

算数运算符只要是用于进行算数运算的,算术运算符与其他语言的运算符基本一样,不做笔记了

  1. 加法 ------ (+)
  2. 减法 ------ (-)
  3. 乘法 ------ (*)
  4. 除法 ------ (/)
  5. 取模 ------ (%)
<?php 
$english = 110; //英语成绩
$math= 118; //数学成绩
$biological = 80; //生物成绩
$physical = 90; //物理成绩
$sum = $english + $math + $biological + $physical;
$avg = $sum / 4;
$x = $math - $english;
$x2 = $english * $english;

echo "总分:".$sum."<br />";
echo "平均分:".$avg."<br />";
echo "数学比英语高的分数:".$x."<br />";
echo "英语成绩的平方:".$x2."<br />";

赋值运算

  1. "=" :吧右边表达式的值赋值给左边的运算符,它会将右边表达式的值复制一份,交给左边的运算符
  2. "&" :引用赋值,意味着两个变量都指向了同一个数据,将两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化

例:

<?php
$a = "alex";
$b = $a."大傻逼";
$c = &$a;
$a = "alex不是大傻逼";

echo $a; // alex不是大傻逼
echo $b; // alex大傻逼
echo $c;// alex不是大傻逼

?>

比较运算

比较运算符返回都是bool类型

比较运算符 名称
== 等于
=== 全等
!= 不等
<> 不等
!== 非全等
< 小于
> 大于
<= 小于等于
>= 大于等于

例:

<?php
    $a = 1;
	$b = "1";
	var_dump($a == $b);
	echo "<br />";
	var_dump($a === $b);
	echo "<br />";
	var_dump($a != $b);
	echo "<br />";
	var_dump($a <> $b);
	echo "<br />";
	var_dump($a !== $b);
	echo "<br />";
	var_dump($a < $b);
	echo "<br />";
	$c = 5;
	var_dump($a < $c);
	echo "<br />";
	var_dump($a > $c);
	echo "<br />";
	var_dump($a <= $c);
	echo "<br />";
	var_dump($a >= $c);
	echo "<br />";
	var_dump($a >= $b);
	echo "<br />";

?>

三元运算符

(?:)三元运算符也是一个比较运算符

$num = 60;
$b  = $num <= 60 ? "及格" : "不及格"; // 如果判断成功取?后面的否则取:后面的
echo $b

逻辑运算符

逻辑运算符朱勇是进行逻辑运算的,例如:逻辑与,逻辑或,逻辑异或,逻辑非等

例子 名称
$a and $b And(逻辑与)
$a or $b Or(逻辑或)
$a xor $b Xor(逻辑异或)
!$a Not(逻辑非)
$a && $b And(逻辑与)
$a || $b Or(逻辑或)
<?php 
    $a = TRUE; //A同意
	$b = TRUE; //B同意
	$c = FALSE; //C反对
	$d = FALSE; //D反对
	//咱顺便复习下三元运算符
	echo ($a and $b)?"通过":"不通过";
	echo "<br />";
    echo ($a or $c)?"通过":"不通过";
	echo "<br />";
	echo ($a xor $c xor $d)?"通过":"不通过";
	echo "<br />";
	echo !$c?"通过":"不通过";
	echo "<br />";
	echo $a && $d?"通过":"不通过";
	echo "<br />";
	echo $b || $c || $d ?"通过":"不通过";
	
?>

字符串连接符

PHP中有两个方式可以将字符串连接起来,第一种是(.),第二种是(.=)

<?php
$a = "alex";
$tip = $a.",欢迎您在慕课网学习PHP!";

$b = "东边日出西边雨";
$b .= ",道是无晴却有晴"; //$b = $b.",道是无晴却有晴";
$b .= $a; // $b = $b.$a

$c = "东边日出西边雨";
$c = $c.",道是无晴却有晴";
echo  $tip."<br />";
echo  $b."<br />";
echo  $c."<br />";
?>

错误控制运算符

PHP中提供了一个错误控制运算符"@",对于一些可能会在运行过程中出错的表达式,可以将@防止在一个PHP表达式之前,该表达式可能产生的任何错误信息都会被忽略

<?php
$conn = @mysqli_connect("localhost","username","password");
echo "出错了,错误原因是:".$php_errormsg;

?>

逻辑控制

if...else...

语法:

<?php
if(条件){
    // .....
}else{
    // .....
}
?>

例:

<?php
efault_timezone_set('Asia/ShangHai'); //设置时区
$today = date('m-d',time());  //获取当前日期
$brithday = '04-20';
$money = 238;
$discount = 0.8;

if ($today == $brithday){
    $sum = $money * $discount;
    echo "生日快乐,共消费:".$sum;
}else{
    echo "共消费:".$money;
}

?>

if ... else if ...

语法:

if (条件1){
    // ...
}else if(条件2){
    // ...
}else{
    // ...
}

例:

<?php
    $totalMoney = 0;//总工资
    $basicMoney =  2000;//基本工资
	$sex = "男";

    if($sex == "男"){	
		$totalMoney = $basicMoney  + 0;// 男的没奖金
    }else if($sex == "女")
		$totalMoney = $basicMoney  + 300;// 女的有奖金300元
	}
	echo $totalMoney;
?>

条件结构之switch ..case ...

语法:

<php?
switch(条件)
{
    case 条件值1:
        break
    case 条件值2:
        break
    default:
        //默认任务
}
?>

例:模拟抽奖

<?php

$num = rand(1,50);
switch ($num){
    case 1:
        echo "一等奖";
        break;
    case 2:
        echo "二等奖";
        break;
    default:
       echo "你抽中的是$num - "."很遗憾你没有中奖!";
}
?>

switch中break的作用是阻止代码进入下一个case中继续执行。

while循环语句

语法:

<php?
while(条件){
    // ...
}
?>

例:100以内能被2整除的数相加

<?php
$num = 1;
$sum = 0;
while ($num < 100){

   if ($num%2 === 0){
        $sum += $num;
   }
   $num +=1;
}
print $sum;
echo "循环结束";

do while循环语句

语法:

<php?
do{
    //执行任务
}while(条件)

?>

首先执行任务,执行任务完毕,判断某个条件是否符合(条件返回值是否为TRUE),若符合则再次执行任务,执行完毕任务,继续判定条件。

例:

<?php

$i = 0;

do{
    $i ++;
    echo "这是第($i)圈";
}while($i < 5);

while与do...whild语句的区别:while在判断条件的时候,如果条件为false,一次也不会执行,do...while会执行一个do结构体中的语句,再进行判断是否需要继续执行下去

<?php
    //A例子
	$num = 2;
	$sum  = 10; 
	while($num<3){
		$sum = $sum  + 10;
	}
	echo "A例子的结果:".$sum."<br />";
	//B例子
	$num = 2;
	$sum  = 10;			
	do{
		$sum = $sum  + 10;
	}while($num<3);
	echo "B例子的结果:".$sum."<br />";
?>

例2:

<?php
/**
 * Created by PhpStorm.
 * User: wualin
 * Date: 2019-04-20
 * Time: 21:09
 */
//例如开发一个掷骰子大富豪游戏,如果掷到6可以再掷一次,如果不是留则跳出可以使用do_while来实现

// 使用while实现
$sum = 0;
$num = rand(1,6);
$sum = $sum+$num;
while ($num == 6){
    $num = rand(1,6);
    $sum = $sum+$num;
}
echo "while例子执行完毕,前进:$sum";

//使用do...while实现
$sum = 0;
do {
    $num = rand(5, 6);
    $sum += $num;

}while($num == 6);
echo "do...while例子执行完毕,前进:$sum";

for循环

语法:

<?php
for(初始化;循环条件;递增项){
    // ...
}
?>

例:求100以内能被2整除的数

<?php
$sum = 0;
for ($num=0;$num<100;$num++){
    if ($num %2 === 0){
        $sum += $num;
    }
}
echo $sum;

foreach循环

在php中的foreach循环语句,常用于遍历数组

语法:

<?php
foreach(数组 as 值){
    // ...
}

foreach(数组 as 下标(索引) => 值){
    // ...
}
?>

例:遍历数组

<?php
$students = array(
'2010'=>'令狐冲',
'2011'=>'林平之',
'2012'=>'曲洋',
'2013'=>'任盈盈',
'2014'=>'向问天',
'2015'=>'任我行',
'2016'=>'冲虚',
'2017'=>'方正',
'2018'=>'岳不群',
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储

//使用循环结构遍历数组,获取学号和姓名  
foreach($students as  $v)
{ 
    echo $v;//输出(打印)姓名
	echo "<br />";
}
?>

使用foreach遍历二维数组

<?php
 $students = array(
'2010'=>array('令狐冲',"59"),
'2011'=>array('林平之',"44"),
'2012'=>array('曲洋',"89"),
'2013'=>array('任盈盈',"92"),
'2014'=>array('向问天',"93"),
'2015'=>array('任我行',"87"),
'2016'=>array('冲虚',"58"),
'2017'=>array('方正',"74"),
'2018'=>array('岳不群',"91"),
'2019'=>array('宁中则',"90"),
);//10个学生的学号、姓名、分数,用数组存储
 
foreach($students as $key => $val)
{ //使用循环结构遍历数组,获取学号 
     echo $key; //输出学号
	 echo ":";
	 //循环输出姓名和分数
	 foreach($val as $v)
	{
		echo $v; 
	 }
	 echo "<br />";
}
?>
原文地址:https://www.cnblogs.com/wualin/p/10744851.html