一、windows环境下php环境
搭建环境对于每个开发者来说,是必须要掌握的技能,但是对于刚刚接触开发没多久的小白来说,完全没有必要把大把的时间花费在搭建环境的身上,想要学习搭建环境,完全可以等到后期再来研究,在学习的初期,完全可以怎么方便怎么快就怎么来。
在windows中,可以选择单独安装环境,也可以选择安装集成环境。
但是有意思的是,我们如果单独的下载php环境需要的文件,会发现任何一个文件都超过百M,但是如果我们安装集成环境,你会发现集成环境的大小都要远远小于独立下载的文件。而出现这种情况的原因是因为独立的文件里面包含了软件的全部服务,而我们单独下载的集成环境则省略了很多内容,所以才导致文件大小不同。
那么对于刚刚入行的我来说,采用集成环境能够减少配置繁琐环境的时间以及不必要的麻烦。
目前国内比较好用的集成环境有很多,例如,wampserver ,phpstudy等等.而我使用的就是phpstudy这款集成环境,中文界面,可以调整多个版本的php等等。
在安装完成之后需要对系统的环境变量进行配置,将php目录路径和mysql目录路径写入到环境变量当中,从而保证开发中的使用。
而我今天所讲的只是php中目前我所掌握的一些基础语法。
二、php定界符
php会经常和html打交道,而php是可以放在html代码的任何位置,以<? 开始,以?>结束。但是需要注意的是,php和html代码结合 存储代码的文件后缀必须是.php。
文件后缀必须是.php
<!doctype html>
<html>
<body>
<h1><?php echo "hello,world" ?></h1>
</body>
</html>
三、php变量
php程序中声明一个变量使用$ 这个美元符号来表示,例如$a,就是采用美元符号加变量名组合的形式来声明变量。变量一旦声明之后会被存储在内存中,直到脚本结束自动销毁或者人为销毁。
声明一个变量通常情况下需要遵循一些规则,例如:
- 变量以$ 开始,后面跟着变量的名称
- 变量名必须以数字字母或者下划线开始
- 变量名只能包含数字字母下划线
- 变量名不能包含空格
- 变量名是区分大小写的,例如$y 和 $Y 是完全不一样的两个变量
- 通常情况下,我们使用变量是为了存储数据,而变量本身并没有意义。
php本身是一门弱类型语言,所以,我们在给变量进行赋值的时候,变量的类型会随着值得变化而变化。例如:
$a = “hello”; // string
$a = array(); // array
我们在程序开发的时候,通常需要预留变量,简单的说就是我们可能预料到在后期会用到一个变量用做存储数据,那么我们就可以提前声明变量,但是变量暂时并不需要值,这个时候我们就可以给变量赋值为null。
变量作用域
作用域的意思是说变量的生效范围,在php中存在四个范围:global(全局作用域)、static(静态)、local(局部作用域)、parameter(参数)。
我给大家说一下全局作用域和局部作用域:
在一个php文件中,如果在函数外面声明的变量,就是全局变量,作用域范围为全局;而在函数内部声明的变量就是局部变量,作用域仅限于函数内部。
例如,局部变量只能在函数内部使用,在函数外部将无法使用,那么无法使用的原因是因为当函数执行完毕之后这个变量就已经被销毁了。全局变量可以在函数中使用,但是必须通过global关键字来使用,否则系统会抛出错误提示。
funtion f1(){
global $a;
echo $a;
}
f1();
而static则表示静态变量。能够让变量停止销毁。
function f2(){
$a =1;
$a++;
echo $a;
}
f2();
echo "\n";
f2();
上面的代码输出结果为 2 , 2。如果此时$a 变为static:
function f2(){
static $a =1;
$a++;
echo $a;
}
f2();
echo "\n";
f2();
那么输出结果为2 , 3 。
原因是static 变量能够让变量即使在函数被销毁的情况下也能得以保存。
函数的参数因为函数的限制,所以只能够在函数内部使用,所以说函数参数的作用域也仅仅停留在函数当中,相当于局部变量。
PHP超全局变量
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量。
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
- $_GET
- $_POST
- $_REQUEST
- $GLOBALS
- $_SERVER
- $_FILES
- $_COOKIE
- $_SESSION
- $_ENV
我只介绍一下其中最常用的几种变量:
$_GET
通过url参数传递给当前脚本的变量的数组。通常情况下用于表单传递。
例如下面的实例(注意,php代码和html代码在同一个页面):
当我们提交过一次留言后,可以看到浏览器url已经发生了变化。
$_POST
当HTTP POST 请求的Content-Type 是 application/x-www-form-urlencoded 或multipart/form-data 时,会将变量以关联数组形式传入当前脚本。
在上面我们使用了get方式进行了html和php数据交互,我们可以将get方法换成post方法。
$_REQUEST
$_REQUEST - HTTP request 变量。
默认情况下包括了 $GET、 $ POST 和 $_COOKIE 的数组。
四、php常量
php常量类似于变量,但是常量一旦被定义就无法更改或者撤销定义。而常量名通常是以字符或者下划线开头(常量名前面并没有$符号)。
设置php常量,需要使用define()函数,define函数有三个参数:
1.首个参数定义常量的名称
2.第二个参数定义常量的值
3.可选的第三个参数规定常量名是否对大小写敏感。默认是false。
define("GOOD","good good study,day day up",true);//常量大小写不敏感,默认为false,大小写敏感
echo GOO; //good good study,day day up
echo good; //可以顺利输出,但是上面第三个参数如果不填或者为false,就会出现错误
常量在项目的开发中使用的频率非常高,通常情况下用于设定一些配置参数或者固定的参数。常量默认的作用域为全局。
五、php输出方式
输出方法echo和print、die()
echo的速度快于print ,echo没有返回值,而print有返回值,且返回值总为1。
其中echo能够输出一个或者多个字符串,而print仅能够输出一个字符串。
<?php
echo 'hello word<br>';
print 'hello word';
?>
输出结果为:hello world
hello world
die() >> 输出一条消息,并退出当前脚本。//相当于 return的结束当前函数的功能
六、数据类型
在php中,存在的数据类型如下:
- string 字符串
- integer 整型
- float 浮点
- boolean 布尔
- array 数组
- object 对象
- null 空值
- resource 资源
七、php数组
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
创建数组:
$arr = array(1,2,3,4,5);
使用数组:
$arr[0] //1
$arr[1] //2
手动数组赋值:
$arr[0] = 11;
数组相关方法:
获取数组长度:count()函数;
count($arr);//返回数组长度;
这样我们就可以写for循环了,数组中的内容我们就可以遍历出来了;
for($x = 0 ; $x < count($arr) ; $x++){
echo $arr[$x];
}
索引数组
$arr = array(3,4,5,6,7);
echo $arr;
print_r($arr);
echo count($arr);
echo "<br>";
echo $arr[0];
for($i=0;$i<count($arr);$i++){
echo $arr[$i];
echo "<br>";
}
php关联数组:(用=>链接起来)
$testArray = array('name' => 'zhangsan','age' => 18 );
echo 'zhangsan age is '.$testArray['age'];
$arr = array("name"=>"admin","age"=>18);
print_r($arr);
foreach($arr as $key=>$val){
// echo $key;
echo "<br>";
echo $val;
}
数组排序:
sort() :升序排列; rsort() :降序排列;
遍历关联数组:foreach();
foreach()第一个参数为数组>> foreach($arr);
foreach()第二个参数为关键字as代表在数组中找到的值赋给后面的变量 >> foreach($arr as);
foreach()第三个和第四个参数为key和value ;也就是关联数组中的键和值 用 => 链接 >> froeach($arr as $key => value);
$arr = array('firstName' => 'yang', 'lastName' => 'huaizhi’);
foreach ($arr as $key => $value) {
echo $key.'<br>';
echo $value.'<br>';
}
foreach() 会执行两次,因为数组中有两对数据,如果数组中的数据有n个那么foreach就执行n次;
键值一一对应,根据颜色来查看;
八、php函数
其实PHP最经典,也是最核心的地方就是函数,PHP提供了超过一千种內建函数,参考手册点击前往 :参考手册
作用域:
1.局部变量;
函数中的参数也是局部变量;
<?php
$x=5; // 全局变量
function myTest(){
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>”;
echo "变量 x 为: $x”;
echo "<br>”;
echo "变量 y 为: $y”;
}
myTest();
echo "<p>测试函数外变量:<p>”;
echo "变量 x 为: $x”;
echo "<br>”;
echo "变量 y 为: $y”;
?>
2.全局变量:
<?php
$x=5;
$y=10;
function myTest(){
global $x,$y; //利用这个关键字声明的变量是全局变量;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
3.Static 作用域(JS中的闭包);
局部变量在运行结束之后会被删除,再次重新声明时会被重新赋值,但是static类变量不会,他会一直存在于php的变量中;
<?php
function fnName(){
static $x = 11;
echo $x;
$x++;
}
fnName();
fnName();
?>
九、php对象
类与对象;
<?php
class show{
var $hello = "hello”;
function showMe(){
echo $this->hello . " world";
}
}
$me = new show();
$me -> showMe();
?>
PHP中 用class 命名一个对象, 这个对象里面可以有属性和方法, 属性的命名方式为 var $变量名 = 变量值;
在类中使用这个变量的时候使用 $this 指向当前类。 $this -> 变量名(直接写变量名);
实例化类的时候,用new关键字;
调用内部方法的时候 使用 ->
十、返回JSON格式数据
json_encode()方法进行json格式的转码;
接收一个关联数组,返回值就是json格式的数据
作用:就是将关联数组转换成json格式的数据
<?php
$json = json_encode(array('a'=>'bbbb','c'=>'ddddd'));
echo $json;
?>
注意:php每行代码结束都必须加分号
以上只是一些我所知道的php基础语法,并不全面也可能出现错误。希望大家可以指正,指点一番,共同进步。