PHP学习笔记:基础语法

整理一下PHP入门的基础知识

一般语法

<?php #代码段 ?>
关键字,函数名,类,大小写不敏感
变量大小写敏感
默认文件扩展名为*.php
通常包含HTML标签以及一些PHP脚本代码
注释://、#、/* ... */

一致语法

if…else if…else,switch-case,while,for

1
2
3
4
5
6
7
8
# foreach用法
<?php
$colors = array("red","green","blue","yellow");

foreach ($colors as $value) {
echo "$value <br>";
}
?>

输出语句

  1. echo 常用的输出语句,例如:echo ‘helloworld!’;
  2. print() 输出语句,有返回值。例如:print(‘helloworld!’); 输出成功返回1,失败返回0。
  3. printf(); 格式化输出字符串。例如:printf(“%d,%f”,12,12.3);
  4. print_r(); 输出数组、对象等复合数据类型。例如:print_r($array);
  5. var_dump(); 可以判断一个变量的类型与长度,并输出变量的数值。例如:var_dump(‘helloworld!’);

常量

常量类似变量,但是常量一旦被定义就无法更改或撤销定义。

自定义常量

使用define()函数,它有三个参数

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
1
2
3
4
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>

预定义常量

'预定义常量'

变量

PHP 是一门类型松散的语言。我们不必告知 PHP 变量的数据类型。
PHP能 根据它的值,自动把变量转换为正确的数据类型。

定义变量:$varName= varValue; //变量会在首次为其赋值时被创建
取变量:$varName
引用赋值:$str2 = & $str1

变量命名规则

变量以 $符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线
变量名称对大小写敏感(y与Y 是两个不同的变量)
变量会在第一次赋值时被创建。无需声明变量的类型。

变量作用域

local(局部)

函数内部声明的变量,作用域是所在函数,只能在函数内部进行访问

1
2
3
4
5
6
7
<?php
function myTest() {
$y=10; # 局部作用域
echo '测试函数内部的变量:'.$y.'<p>'; # 测试函数内部的变量:10
}
myTest();
?>

global(全局)

被函数之外声明的变量,作用域是整个php文件
函数以外直接进行访问
函数内使用global 关键词访问全局变量

1
2
3
4
5
6
7
8
9
10
11
<?php
$y=10;

function myTest() {
global $y; # 函数内访问全局变量必须使用global 关键词
$y=10 + $y;
}

myTest();
echo $y; // 20
?>

$GLOBALS[index]的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。

1
2
3
4
5
6
7
8
9
10
<?php
$y=10;

function myTest() {
$GLOBALS['y'] = 10 + $GLOBALS['y'];
}

myTest();
echo $y; // 输出 20
?>

static(静态)

加长变量的作用域
可以在函数调用结束后仍保留变量值,当再次回到其作用域时,继续使用原来的值

可变变量

允许动态改变一个变量名称,变量名是一个变量

1
2
3
4
5
6
7
<?php
$a = 'hello';
$$a = 'world';

echo "$a ${$a}"; //hello world
echo "$a $hello"; //hello world
?>

超级全局变量

超全局变量是在全部作用域中始终可用的内置变量
$GLOBALS:引用全局作用域中可用的全部变量
$_SERVER:保存关于报头、路径和脚本位置的信息
$_REQUEST:用于收集 HTML 表单提交的数据
$_POST:用于收集提交method=”post” 的 HTML 表单后的表单数据。也常用于传递变量
$_GET:也可用于收集提交 HTML 表单 (method=”get”) 之后的表单数据
$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量
$_ENV:包含服务器端环境变量的数组
$_COOKIE:通过HTTP cookie传递给当前脚本的变量的关联数组

数据类型

四种标量类型:boolean(布尔型),integer(整型),float(浮点型,double),string(字符串)
两种复合类型:array(数组),object(对象)
两种特殊类型:resource(资源),NULL(无类型)

检测数据类型

'检测数据类型'

转化类型

  • (boolean),(string),(integer),(float),(array),(object)

举个栗子 (boolean)$str 将变量转换为布尔型

  • settype ( mixed &$var , string $type )
    1
    2
    3
    4
    5
    6
    7
    <?php
    $foo = "5bar"; // string
    $bar = true; // boolean

    settype($foo, "integer"); // $foo is now 5 (integer)
    settype($bar, "string"); // $bar is now "1" (string)
    ?>

运算符

运算符类型

字符串运算符

“.”:拼接字符串

1
echo "you " . "1" . '<p>';

“+”:只用于算术运算符【如果符号两边是字符类型->整型;字母->0;数字开头的字符串->截取数字】
其他运算符一致

数组运算符

注意:PHP中,数组的元素的顺序,不是由下标(键名)决定的,而是完全由加入的顺序来决定。

“+“:联结 将右边的数组项合并到左边数组的后面,得到一个新数组。如有重复键,则结果以左边的为准

1
2
3
$v1 = array(1, 2,3, 4);
$v2 = array(5,6,7,8,9);
$r1 = $v1 + $v2; //结果只能是:array(1,2,3,4,9)

“==”: 相等,如果两个数组具有相同的键名和键值(可以顺序不同,或类型不同),则返回true

1
2
3
4
5
$v1 = array(1, 2,3, 4);
$v2 = array(4213);
$v3 = array(3=>41=>20=>12=>3);
echo $v1 == $v2; //不等
echo $v1 == $v3; //相等

“!=, <>” :不相等,如果两个数组不是相等(==),则返回true
“===”:全等,如果两个数组具有相同的键名和键值且顺序和类型都一样,则返回true
“!==” : 不全等,如果两个数组不是全等(===),则返回true

错误控制运算符:@

通常用于一个“可能”发生错误的表达式的前面——最常用的情形就是连接数据库。

1
2
$link = @mysql_connect(“localhost, ”’, “”,’”); 
var_dump($link);

或者更进一步的使用

1
2
$link = @mysql_connect(“localhost, ”’, “”,’”) or die("database link error"); 
var_dump($link);

通常错误控制运算符用在程序开发测试阶段无法预测的可能出错的位置——一般是获取外部资源的时候
die是一种“语言结构”,并非函数,可以不写括号
sleep($n);:让php脚本停止$n秒,然后继续执行。

运算符优先级

优先级高的操作先执行
同一优先级的操作从左到右执行
赋值操作从右到左
括号内先执行
'运算符优先级'

函数

一般函数

1
2
3
4
5
6
7
<?php
function writeMsg() {
echo "Hello world!";
}

writeMsg(); // 调用函数
?>

带参函数[值传参,引用传参],参数默认值]

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$test = 1;
function setSum($name,&$quoteValue,$value=10) {
echo "$name sum is $value <br>";
$quoteValue = 100;
}

echo $test.'<br>';
setSum("width",$test);
setSum("length",$test);
setSum("high",$test);
echo $test;
?>

带返回值函数

1
2
3
4
5
6
7
8
9
<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}

echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
?>

变量函数

类似于可变变量,将变量作为函数名

1
2
3
4
5
6
7
8
<?php
function fn(){
echo 'hello';
}

$str = 'fn';
$str();
?>

函数引用

使用变量引用函数,和参数引用传递不同,对函数的引用必须在两处都要用‘&’,用来说明返回的是引用

1
2
3
4
5
6
7
<?php
function &rFun1($tmp = 0){
return $tmp;
}
$str = &rFun1("god love you");
echo $str.'<br>';
?>

取消引用

unset():取消引用,断开变量名和变量内容之间的绑定,并不销毁变量,也不改变原变量

数组

数组类型

索引数组 - 带有数字索引的数组

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$cars=array("Volvo","BMW","SAAB");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; # 索引下标

$arrlength=count($cars); # 个数
echo $arrlength;

for($x = 0; $x < $arrlength; $x++) { # 遍历索引
echo $cars[$x];
echo "<br>";
}
?>

关联数组 - 带有指定键的数组

1
2
3
4
5
6
7
8
9
10
<?php
# 第一种定义方法
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");

# 第二种定义方法
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

?>

多维数组 - 包含一个或多个数组的数组

1
2
3
4
5
6
7
8
9
<?php 
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
?>

常用数组操作

获得数组元素个数

int count(mixed array[, int mode])

1
2
$arr = array("Volvo",22,18);
count($arr);

数组查询

array_search()在数组中搜索给定的值,找到后返回键名,否则返回false。
PHP4.2.0前,函数失败时返回null
mixed array_search(mixed needle, array haystack[, bool strict])
needle指定在数组中搜索的值,
haystack指定被搜索的数组,
strict为true将检查给定值的类型
常用于购物车中修改指定商品数量的修改和删除

获取数组中最后一个元素

array_pop()获取并返回数组最后一个元素,并将数组长度减1,数组为空或类型不对,返回null
mixed array_pop(array array)

数组添加元素

array_push()向数组末尾添加元素,返回新的总数
int array_push(array array, mixed var[, mixed])

数组删除重复元素

array_unique()将数组元素的值作为字符串排序,对每个值只保留第一个键名,忽略所有后面的键名
并不改变原数组,将删除重复元素的数组返回
array array_unique(array array)

数组排序

sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序

文章目录
  1. 1. 一般语法
    1. 1.1. 一致语法
    2. 1.2. 输出语句
    3. 1.3. 常量
      1. 1.3.1. 自定义常量
      2. 1.3.2. 预定义常量
    4. 1.4. 变量
    5. 1.5. 变量命名规则
    6. 1.6. 变量作用域
      1. 1.6.1. local(局部)
      2. 1.6.2. global(全局)
      3. 1.6.3. static(静态)
    7. 1.7. 可变变量
    8. 1.8. 超级全局变量
    9. 1.9. 数据类型
    10. 1.10. 检测数据类型
    11. 1.11. 转化类型
  2. 2. 运算符
    1. 2.1. 运算符类型
      1. 2.1.1. 字符串运算符
      2. 2.1.2. 数组运算符
      3. 2.1.3. 错误控制运算符:@
    2. 2.2. 运算符优先级
  3. 3. 函数
    1. 3.1. 一般函数
    2. 3.2. 带参函数[值传参,引用传参],参数默认值]
    3. 3.3. 带返回值函数
    4. 3.4. 变量函数
    5. 3.5. 函数引用
    6. 3.6. 取消引用
  4. 4. 数组
    1. 4.1. 数组类型
      1. 4.1.1. 索引数组 - 带有数字索引的数组
      2. 4.1.2. 关联数组 - 带有指定键的数组
      3. 4.1.3. 多维数组 - 包含一个或多个数组的数组
    2. 4.2. 常用数组操作
      1. 4.2.1. 获得数组元素个数
      2. 4.2.2. 数组查询
      3. 4.2.3. 获取数组中最后一个元素
      4. 4.2.4. 数组添加元素
      5. 4.2.5. 数组删除重复元素
      6. 4.2.6. 数组排序
|