此为我的PHP学习笔记,随时更新学到的内容;记录自己的学习也将笔记分享给需要的人;
输出服务器PHP信息
<?php phpinfo(); ?>
一、写法
1.PHP标记
主要以
<?php
开始和以
?>
为结束
例如
<?php echo "Hello World"; ?>
XML风格
<?php echo "<p>Hello World</p>"; ?>
简短风格
<? echo "Hello World"; ?>
script风格
<script language="php">
echo "Hello World";
</script>
ASP风格
<% echo "Hello World"; %>
2.注释
PHP支持C/C++和shell的注释风格;
<?php
/*
此种注释风格为多行注释
*/
// 下面会输出Hello World
echo "Hello World";
# 上面会输出Hello World
?>
3.连接操作符
如下
<?php
$num = "123";
echo $num."456";
?>
4.字符串
在双引号中可以解析变量和转义字符,但是单引号中不能解析变量且只能解析转义字符单引号(')和转义字符本身(\),只会将变量名以字符串类型解析;
$num = 10;
$str1 = "$num is number";
$str2 = '$num is string';
echo $str1; // 10 is number
echo "<br>";
echo $str2; // $num is string
双引号中的变量前后必须有空格,也就是断点,如果与字符串混淆在一起,就会导致未知变量,但是可以使用{}将变量括起来,如下;
$num = 10;
$str = "this{$num}is demo";
5.定界符
(1) 使用 <<< Name 声明(符号和Name之间不能有空格);
(2) 在开始的定界符(自定义的字符串中)一定要左边接着<<<,写完定界符,一定要直接回车,不能有空格;
(3) 在结尾的字符串定界中,一定要顶头写(没有Tab),和开始的Name要一致,并直接回车;
$num = 10;
$str = <<<start
Hi \n:
this $num is a Demo;
start;
echo $str;
给Name加上单引号,将使定界符默认支持双引号的功能改为支持单引号的功能,例如下面代码会直接输出字符串,而不会输出变量$num的值;
$num = 10;
$str = <<<'start'
this $num is a Demo;
start;
二、函数
声明
function(){
}
参数的默认值只能是标量,如果参数有默认值的话,调用函数时可以不传参,如果传了就会替换默认值;
三、变量
1.变量声明
以 $ 开头,变量名不能以数字开头,区分大小写;
$int = 10;
2.可变变量
$old = "hello";
$$old = 20;
echo $hello; // 20
3.取址符号
& 符号
$a = 10;
$b = &$a;
echo $a,"<br>"; // 10
echo $b; // 10
1.只有变量有地址,也就是只有变量才能引用;
2.一个变量的值发生变化,另一个变量的值也会发生变化;
3.在使用unset()这个函数时,如果有引用关系,只是解除了这种引用关系,只删除一个变量,另一个变量还在;
4.如果有给一个变量添加一个新引用,那么这个变量之前的引用关系会被解除,$a / $b=$a / $b=$c / 那么$b不再和$a是引用关系,而和$c是引用关系;
四、数据类型
1.强制转换数据类型
获取数据类型的函数
var_dump();
getType();
(1) setType()函数法
语法:
steType(变量, 类型);
例子:
$str = "10";
setType($str, "integer");
echo getType($str); // int
(2)赋值声明法
语法:
(类型)数据;
例子:
$int = 10;
$str = (string)$int; // 在数据前面声明数据类型,只改变当前变量的类型,$int类型不变
echo getType($str); // string
(3)
intval()、floatval()、strval();
2.自动转换数据类型
$a = 10;
$b = 20.4;
$c = $a + $b;
var_dump($c); // float(30.4)
整型占4个字节、布尔型占一个字节,所以小的迁就大的;
$a = true;
$b = 10;
$c = $a + $b;
var_dump($c); // int(11)
字符串和整型会转成整型;
字符串和布尔型会转成整型;
字符串和浮点型会转成浮点型;
整型和浮点型会转成浮点型;
整型和布尔型会转成整型;
浮点型和布尔型会转成浮点型;
3.变量类型的测试函数
is_bool(); // 判断是否是布尔型;
is_int(); // is_integer()和is_long()判断是否为整型;
is_float(); // is_double()和is_real()判断是否为浮点型;
is_string(); // 判断是否为字符串;
is_array(); // 判断是否为数组;
is_object(); // 判断是否为对象;
is_resource(); // 判断是否为资源类型;
is_null(); // 判断是否为null;
is_scalar(); // 判断是否为标量;
is_numberic(); // 判断是否为任何类型的数字和数字字符串;
is_callable(); // 判断是否为有效的函数名;
例子:
$int = 10;
if (is_float($int)){
echo "变量int是浮点型";
}else{
echo "变量int不是浮点型";
};
五、常量
1.常量一旦被声明,它的值就不会被改变;
2.常量名称默认是区分大小写的,习惯上常量名全部大写;
3.常量是全局的;
4.常量名前不要加$符号;
5.常量使用函数 define()声明;
define("常量名", "值");
define("ROOT", "Hello World");
define("PASSWD", 123456);
echo ROOT;
6.如果常量没有被声明,调用时会以字符串类型输出常量名;
echo ROOT // ROOT
7.可以使用define()函数的第三个参数(true或false)来决定是否让这个常量名称区分大小写;
define("ROOT", 100, true);
8.常量不能使用unset()清除一个常量;
9.使用defined()函数来判断一个常量是否存在;
define("ONE", "TWO");
if(defined("ONE")){
echo "常量ONE存在";
}else{
echo "常量ONE不存在";
}
10.还可以使用constant()函数读取常量的值;
define("ONE", 10);
echo constant("ONE");
echo "<br/>";
echo ONE;
11.使用 get_ defined_constants()函数获取所有已定义的常量列表;
echo get_defined_constants();
echo "<br/>";
var_dump(get_defined_constants());
六、运算符
1.算术运算符
+ - * / % ++ --
加 减 乘 除 取模 加加 减减
加加和减减:符号在左和在右的区别
$a = 5;
++$a; // 先加再用
$a++; // 先用再加
// 上面两个结果一样
$b1 = 5;
$b2 = 5;
$c = ++$b1;
$d = $b2++;
echo $c; // 6
echo "<br/>";
echo $d; // 5
例子
$a =5;
$b = $a++ + ++$a;
echo $a; // 7
echo "<br/>";
echo $b; // 12
注意:布尔型不参与加加和减减;
2.赋值运算符
= += -= /= *= %= .=
.=的作用:将右边内容附加到左边内容;
$str = "我的名字";
$str .= "叫";
$str .= "Weic";
echo $str; // 我的名字叫Weic
赋值 加等 减等 乘等 除等
3.比较运算符
> < == >= <= === != !==
大于 小于 等于 大于等于 小于等于 不等于 不等于
4.逻辑运算符
&& || !
与 或 非
5.位运算符
& | ^ ~ >> <<
6.其他运算符
? : @ => ->
三元运算符
("?:")三元运算符也是一个比较运算符,对于表达式(expr1)?(expr2):(expr3),如果expr1的值为true,则此表达式的值为expr2,否则为expr3。
<?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 > 5;
$b = 5;
七、字符串操作
字符串的整理:chop()、ltrim()和trim()
trim()函数可以清除字符串开始位置和结束位置的空格,并将结果字符串返回。默认情况下,除去的字符串是换行和回车符(\n和\r)、水平和垂直制表符(\t和\xoB)、字符串结束符(\o)和空格。
除了这个默认的过滤字符列表外,也可以在该函数的第二个参数中提供要过滤的特殊字符。更具特定用途,可以会希望使用ltrim()函数或rtrim()函数。
这两个函数的功能都类似于trim()函数,他们都以需要处理的字符串作为输入参数,然后返回经过格式化的字符串。这三个函数的不同之处在于trim()将出去整个字符串前后的空格,而ltrim()只从字符串的开始出(左边)除去空格,rtrim()只从字符串的借书处(右边)除去空格。
<?php
$str = " world ";
echo "hello".$str; // hello world
echo "<br>";
echo "hello".trim($str," "); // helloworld
echo "<br>";
echo "hello".ltrim($str,"w");
八、流程控制
1.顺序结构
3.分支结构
switch语句
switch语句的工作方式类似于if语句,但是它允许条件可以有多于两个的可能值。在一个if语句中,条件或者为true,或者为false。而在switch语句中,只要条件值是一个简单的数据类型(整数、字符串或浮点型),条件就可以具有任意多个不同的值。
必须提供一个case语句来处理每一个条件值,并且提供相应的动作代码。此外,还应该有一个默认的case条件来处理没有提供任何特定值的情况。
1.如果case中的语句过多,就可以将多个语句做成一个函数之类的;
2.switch(变量) 变量类型只允许整数和字符串;
switch($str){
case "a" :
echo "this is a";
break;
case "b" :
echo "this is b";
break;
default :
echo "this is default";
break;
}
匹配多个值:
switch(){
case 1 :
case 2 :
case 3 :
echo "hello";
}
3.循环结构
while循环
$num = 0;
while($num <= 100){
echo $num."<br>";
$num++;
}