Dean Front-end Dev Engineer

PHP 入门

2018-02-13
PHP

PHP 能够生成动态页面内容
PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
PHP 能够接收表单数据
PHP 能够发送并取回 cookies
PHP 能够添加、删除、修改数据库中的数据
PHP 能够限制用户访问网站中的某些页面
PHP 能够对数据进行加密

变量

  • PHP 是一门松散类型的语言,不必向 PHP 声明变量的数据类型。

  • PHP 支持 8 种原始类型,其中包括四种标量类型,两种复合类型和两种特殊类型。

  • 变量以 $ 开头,PHP 没有创建变量的命令,变量会在首次为其赋值时被创建。

  • 与 js 不同,PHP 函数之外声明的变量拥有 global 作用域,只能在函数外访问;

    函数内部声明的变量拥有 local 作用域,只能在函数内部访问。

  • global 关键词,用于访问函数内的全局变量。(就是说加上关键词 global,这个变量就变成了全局变量)

  • static 关键词,一个函数执行后,当我们需要不删除某个局部变量时,那首次声明此变量使用static

  • 超全局变量,PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域都可用,且不需要加关键词 global 就可以访问。以下是部分超全局变量。

    $GLOBALS

    保存所有的全局变量。$GLOBALS[index] 。例如有一个全局变量 $goods 要在局部中使用,可以$GLOBALS[goods]

    $_SERVER

    保存关于报头、路径和脚本位置的信息。

    $_REQUEST

    用于收集HTML表单提交的数据

    $_POST

    广泛用于收集 post 请求的表单数据。

    $_GET

    广泛用于收集 get 请求的表单数据。

    $_FILES

    $_ENV

    $_COOKIE

    $_SESSION

    $x = 5;
    $z = 100;
    function sum(){
        global $x;
        $x = 50;
        $GLOBALS['z'] = 500;
        static $n = 0;
        echo $n;
        $n++;
    }
    sum();//0
    sum();//1
    sum();//2
    echo $x;//50
    echo $z;//500
    

//常用方法
var_dump($var);//输出数据类型&长度(字符串,数组,对象)&值
echo $var;//输出数据
memory_get_usage();//消耗内存
unset($var)//注销变量$var的定义
date('m-d',time())//日期

四种基本型

  • 布尔型(bool)

  • 整型(int)

  • 浮点型(float):小数及科学记数法

  • 字符串(string):单引号及双引号都可以。当引号中间有变量时,单引号中的变量会变成字符串,而双引号中的变量值会连接字符串。

    另外当字符串特别长时还可以用:<<<GOD GOD; 来包括字符串

两种特殊类型

  • 资源(resource)
<?php

    $file_handle = fopen('wang.txt','r');//打开wang.txt
    if ($file_handle) {//判断是否存在
        while (!feof($file_handle)) {//判断是否到末尾
            $line = fgets($file_handle);//读取一行
            echo $line;//输出一行
            echo '<br />';//换行
        }
    }
    fclose($file_handle);//关闭wang.txt
	$myfile = fopen('wang.txt','w');//创建文件
  	fwrite($myfile,'这是文件的文本');//输入内容,或者变量
?>
  • NULL(NULL)
<?php 
     error_reporting(0); //禁止显示PHP警告提示
     $var;
     var_dump($var);//NULL
     $var1 = null;
     var_dump($var1);//NULL
     $var2 = NULL;
     var_dump( $var2);//NULL
     $var3 = "节日快乐!";
     unset($var3);//注销$var3的定义
     var_dump($var3);//NULL
?>

两种复合类型

  • 数组(array)
$arr = array('123' => array('1','2','3'),'456' => array('4','5','6'));
  • 对象(object)
/**
* 车
*/
class Car
{
    var $color;
    function Car($color = 'green')
    {
        $this->color = $color;
    }

    function sayColor()
    {
        return $this->color;
    }
}

$ferrari = new Car('yellow');

常量

定义常量(常量名称前没有$符号,与变量不同,常量贯穿整个脚本,是自动全局的。)

//定义常量
define(string $constant_name, mixed $value,[$case_sensitive = true]);
//判断常量是否被定义
defined(string $constant_name)//true,false
<?php
$p = "PII";
define("PI",3.14);
define($p,3.14);

echo PI;//3.14
echo "<br />";
echo PII;3.14
?>

//读取常量
define("PI",3.141592653);
PI//直接常量名读取
constant("PI")//使用constant读取

常见系统常量

__FILE__//php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置
__LINE__//php程序文件行数。它可以告诉我们,当前代码在第几行
PHP_VERSION//当前解析器的版本号。
PHP_OS//执行当前PHP版本的操作系统名称。它可以告诉我们服务器的操作系统名称。

PHP的运算符

与 javascript 相同的就不写了,只讲区别。

赋值运算符

=

将右边表达式的值复制一份,交给左边的运算数。即首先给左边的运算数申请一块内存,然后将复制的值放到这个内存中去

&

引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据改变了,那个两个变量的值都会发生变化。

$a = "原样";
$b = $a;
$c = &$a;
$a = "改变后"
echo $b;//原样
echo $c;//改变后

逻辑运算符

逻辑与或有两种形式,是因为运算符优先级的问题

逻辑与:and &&

逻辑或:or ||

逻辑非:!

逻辑异或:xor 判断两个值是否不同,如果不同,值为true,否则为false

字符串连接符

. .=

PHP的循环结构、条件语句

while do...while for if else switch case default 跟javascript一样

foreach 常用于遍历数组,一般有两种方式:不取下标、取下标

foreach($arr as $val){}
foreach($arr as $key => $val){}

echo 和 print 语句

  • 两个输出的字符串中都可以包含 HTML 标记。

  • 使用双引号时可以输出变量。

  • 值为 true 时,输出 1,为 false 时,不输出。

  • echo 能够输出一个以上的字符串,echo 比 print 稍快,因为它没有返回值。

  • print 只能输出一个字符串,并始终返回 1

    $txt = 'learn PHP';
    echo 'hello';
    echo 'This','is','my','cat';
    echo "Happy to $txt";
    print 'This is my cat';
    

PHP的函数

PHP 定义函数时,可以传入默认参数值。

function sum($a = 20, $b = 50){
	return $a + $b;
}
sum();//70
sum(1,1);//2

字符串函数

strlen($str);//字符串长度
strpos($str,str);//查找字符串$str中的str,找到匹配,则返回首个匹配的字符index,未匹配,则返回false;

数组函数

count($arr);//用于返回数组的长度
//数组排序,直接可以对多位数进行排列,不像js需要加回调函数
sort()//以升序对数组排序
rsort()//以降序对数组排序
asort()//根据值,以升序对关联数组进行排序
ksort()//根据键,以升序对关联数组进行排序
arsort()//根据值,以降序对关联数组进行排序
krsort()//根据键,以降序对关联数组进行排序

上一篇 Liunx常用命令

Comments

Content