做完西邮成绩这个项目后想要把前端的学习放放,一个学前端的如果没有接触过后台的学习那就太不合格了,所以我决定从PHP入手学习。为什么选择PHP呢?后台开发的语言有很多PHP,node.js,Java等,但是相对于初学者来说PHP比较好入门一点,它是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。所以下来我讲一下自己整理的PHP比较特殊的地方。
1.” “与’ ‘
PHP允许我们在双引号串中直接包含字串变量,而单引号串中的内容总被认为是普通字符。例如:
$str='hello,world';
echo "str is $str"; //运行结果: str is hello,world
echo 'str is $str'; //运行结果: str is $str
2.->与=>
在PHP里面->和=>完全不同的,->用来引用对象的成员(属性与方法),=>只用来数组赋值。例如:
关联数组:
$arr = array('a' => 'apple', 'b' => 'banana');
foreach ($arr as $key => $value) {
echo "key:".$key.' '.'value:'.$value.'<br>';
}
类与对象:
class Person{
public $name = "csdn";
}
$per = new Person();
echo $per->name;
3.数据类型
PHP中与其他编程语言一致都具有像整型,浮点型,布尔型等数据类型,这里我着重讲一下整型与字符型。定义两个变量,数字1与字符‘1’,他们有什么区别呢?在c语言中,数字1就代表1,但是字符1代表了在ascii码表中序号为1的字符。我们看看在PHP中他们之间的区别和联系:
$a = 1;
$b = '1';
echo var_dump($a).'<br>';//int 1
echo var_dump($b).'<br>';//string '1' (length=1)
echo 1+$a.'<br>';//2
echo 2+$b;//3
在PHP语言中,字符型的数据也能进行数据运算,我们看看c语言的效果:
#include <stdio.h>
int main(){
int a = 1;
char b = '1';
printf("%d\n",a+1);//2
printf("%d\n",b+2);//51
return 0;
}
为什么是51嘞?那是因为数字1的ascii码为49,加上2自然是51啦。那js里的效果呢?
var a = 1,b = '1';
console.log(1 + a + '\n');//2
console.log(2 + b);//21
三种语言的不同的结果真的是让人很费解,他们为啥结果不同呢?对此我还没有细细研究过,只是觉得很神奇。
4.函数作用域
在PHP语言中函数作用域有一个法则:作用域不重叠。(全局不能访问局部,局部不能访问全局) 。其中,对于全局不能访问局部数据我们可以理解,但是局部怎么不能访问全局呢?来,上代码:
$a = 0;
function lovePhp(){
$a = $a + 10;
}
lovePhp();
echo $a;//程序报错
?>
PHP有两种作用域,全局与局部,既然作用域不重叠,那么就是这个道理吧。那么怎么解决呢?
$a = 0;
function lovePhp(){
global $a;
$a = $a + 10;
}
lovePhp();
echo $a;//10
?>
使用关键字“global”你就可以把全局数据导入到一个函数的局部范围内。下面介绍一种比较特殊的玩意——超全局变量。
超全局变量是指在全部作用域中始终可用的内置变量。PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global + 变量就可以访问它们。
这些超全局变量是:
- $_GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
接下来看一下具体超全局变量是怎么用的。
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z; //100
5.字符串
PHP中的字符串和js里的有点区别,比如简单的连接符,js用的是”+”但是PHP中用的就是”.”。PHP中一个字符串 通过下面的3种方法来定义:
- 单引号
- 双引号
- heredoc语法结构
单引号,双引号,此前已介绍过,现在我们说说什么是heredoc语法。
php 中的 heredoc技术是php用来引用字符串的一种方式。语法: - 使用操作符 “<<<”
- 操作符后紧跟标识符(开始标识符),之后重起新的一行 输入要引用的字符串,可以包含变量。
- 新的一行,顶格写结束表示符,以分号结束。
要注意到几点:
a.标识符可以自定义 一般的 有EOT ,EOD EOF 等, 只有保持开始表示符和结束表示符一样即可。
b.结束表示符必须独占一行,且必须顶格写,最后以 ‘;’ 分号结尾。
c.所有引用的字符串中可以包含变量,无需字符串连接符。
代码如下:
$v=2;
$a= <<<EOF
"abc"$v
"123"
EOF;
echo $a;//"abc"2 "123"
位于开始标记和结束标记之间的变量可以被正常解析,常用在输出包含大量HTML语法d文档的时候。
6.数组
PHP数组中有三种形式:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
其中索引,多维数组很常见,但是关联数组却不常见,但在PHP中却很常用,我们现在来好好研究一下它。所谓关联数组,表面字义上就是有关联的数组,的确,数组通过key与其对应的value值进行联系。现在看看它的创建:
$arr = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");
或者是
$arr['apple'] = "苹果";
$arr['banana'] = "香蕉";
$arr['pineapple'] = "菠萝";
关联数组的遍历:
$arr = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");
foreach ($arr as $key => $value) {
echo "key: ".$key." "."value: ".$value."<br>";
}
//key: apple value: 苹果
//key: banana value: 香蕉
//key: pineapple value: 菠萝