PHP- php基本语法和数据类型

PHP基本语法

PHP 标识符

  • PHP 脚本以 <?php 开头,以 ?> 结尾:<?php code ?>
  • PHP 脚本可放置于文档中的任何位置。
  • PHP 文件的默认文件扩展名是 “.php”。
  • PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。
  • PHP 语句以分号结尾(;),功能语句必须以(;)结尾。
  • PHP 代码块的关闭标签也会自动标明分号(因此在 PHP 代码块的最后一行不必使用分号)。
  • PHP注释:
    • 单行注释:// # 。
    • 多行注释:/* ...*/ 多行注释不能嵌套多行注释。
<?php
 echo  "Hello world" ;
 // ... more code
 echo  "Last statement" ;
 // 脚本至此结束,并无 PHP 结束标记 

PHP与HTML混编

凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略,这使得 PHP 文件可以具备混合内容。 可以使 PHP 嵌入到 HTML 文档中去。

<p>This is going to be ignored by PHP and displayed by the browser.</p>
<?php  echo  'While this is going to be parsed.' ;  ?>
<p>This will also be ignored by PHP and displayed by the browser.</p> 

当 PHP 解释器碰到 ?> 结束标记时就简单地将其后内容原样输出(除非马上紧接换行 - 见指令分隔符)直到碰到下一个开始标记;

<?php  if ( $expression  ==  true ):  ?>
  This will show if the expression is true.
<?php  else:  ?>
  Otherwise this will show.
<?php  endif;  ?> 

PHP变量

  1. 变量

    • php中存储数据的一种方式,就是可以发生改变的量(数据-- 8种数据)。
    • 在内存中开辟一个可以存放数据的空间,给这个空间取一个名字,当前空间就是变量。
    • 当前空间的名字就是变量名,当前空间中的数据(8种数据)就是变量值。
    • 这个值在php运行时可以发生改变,这个时候统称为“变量”。
  2. 定义变量并赋值

    • 定义变量: $变量名,即用一个美元符号后面跟变量名来表示。
    • 定义变量并赋值:$变量名 = 值。
    • 在PHP中,不能出现只定义不赋值的情况。
  3. 变量名命名规则

    • 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
    • 按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
    • php变量名不推荐使用中文。
    • PHP变量名严格区分大小写。
    • php变量名要有意义,尽量做到“见名知意”。
    • $this 是一个特殊的变量,它不能被赋值。
  4. 可变变量

    • 可以变化的量
    • 可变变量只是变量的一种,可以在开头连续使用多个$符号。
    • 理论上$符号可以无限使用,实际上一般只使用2个。
    • 综合方式,是从右向左依次结合一个$,解析成字符串后,再结合下一个$,依次类推,直到最后一个。
  5. 变量的引用赋值(标量类型):

    • 普通变量赋值:变量2 = 变量1
    • 引用变量赋值:变量2 = &变量1(变量2相当于变量1值的别名,执行同一个数据)
  6. 变量命名方式

    • 驼峰式命名法:第一个单词的首字母小写,其他大写 getUserName。
    • 匈牙利命名法:每个单词下划线隔开:get_user_name。
    • 帕斯卡命名法: 每个单词首字母大写:GetUserName。

变量常用的几个函数

  • echo 输出或者打印变量的值。
  • var_dump 打印变量的相关信息–类型、长度、值。
  • isset 检测变量是否存在。
  • unset 删除变量值。
  • empty — 检查一个变量是否为空
    • 以下的东西被认为是空的:
      1. “”(空字符串)
      2. 0 (作为整数的0)
      3. 0.0 (作为浮点数的0)
      4. “0” (作为字符串的0)
      5. NULL
      6. FALSE
      7. array() (一个空数组)
      8. $var; (一个声明了,但是没有值的变量)
      9. resource 资源都不为空

在这里插入图片描述

PHP数据类型

PHP 支持 8 种原始数据类型。

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

Integer 整型

  • 简单地说,就是正整数,负整数,0。
  • 要使用八进制表达,数字前必须加上 0(零)。
  • 要使用十六进制表达,数字前必须加上 0x。
  • 要使用二进制表达,数字前必须加上 0b。
<?php
 $a  =  1234 ;  // 十进制数
 $a  = - 123 ;  // 负数
 $a  =  0123 ;  // 八进制数 (等于十进制 83)
 $a  =  0x1A ;  // 十六进制数 (等于十进制 26)
# 如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。 
var_dump ( 01090 );  // 八进制 010 = 十进制 8
 ?> 
  • 整数溢出:如果给定的一个数超出了 integer 的范围,将会被解释为 float 。同样如果执行的运算结果超出了 integer 范围,也会返回 float 。
  • PHP 中没有整除的运算符。1/2 产生出 float 0.5。值可以舍弃小数部分强制转换为 integer ,或者使用 round() 函数可以更好地进行四舍五入。

转换为整型

  1. 要明确地将一个值转换为 integer ,用 (int) 或 (integer) 强制转换。
  2. 因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换
  3. 通过函数 intval() 来将一个值转换成整型
  4. 从布尔值转换: FLSE 将产生出 0(零), TRUE 将产生出 1(壹)。
  5. 从浮点型转换 :当从浮点数转换成整数时,将向下取整。
  6. 字符串转换为数值:
    1. 如果该字符串没有包含 ‘.’,‘e’ 或 ‘E’ 并且其数字值在整型的范围之内,将被当成 integer 来取值。否则被作为 float 来取值。
    2. 如果字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。
    3. 合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 ‘e’ 或 ‘E’ 后面跟着一个或多个数字构成。

Float 浮点型

  • 浮点型(也叫浮点数 float,双精度数 double 或实数 real),数学中的小数和分数等。
  • NaN:某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE 。
    • 由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用is_nan() 来检查。

String 字符串

  • 一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。
  • 任何类型的数据加上引号(单引号,双引号)就是字符串。

一个字符串可以用 4 种方式表达:

  1. 单引号声明:定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。
    1. 要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。
    2. 要表达一个反斜线自身,则用两个反斜线(\)。
  2. 双引号声明:(如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析)
  3. 定界符声明:
    • 使用定界符需要注意开头和结尾的书写格式。
    • 以<<<开始,后面跟一串自定义的字符串。
    • 书写完自定义的字符串时,必须换行些内容。
    • 书写完内容后,必须另起一行写结束符号。
    • 结束时所引用的标识符必须在该行的第一列,且后面不能有其他任何内容。
    • 自定义字符串一般使用EOF(end of file)。
    • 标识符的命名只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。
    • 定界符语法结构
      • heredoc 结构是类似于双引号字符串的。
      • Nowdoc 结构是类似于单引号字符串的。
// Heredoc 
$str  = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

// Nowdoc 
$str  = <<<'EOD'
 Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

单双引号区别:

  • 在单引号或 Nowdoc 字符串中的变量和特殊字符的转义序列将不会被替换。
  • 当字符用双引号或 Heredoc 结构定义时,其中的变量将会被解析。

如何选择声明方式:

  • 尽量用单引号,功能少效率高。
  • SQL语句一般使用双引号。
  • 大文本或者数据使用定界符的声明方式。

Boolean 布尔类型

  • 要指定一个布尔值,使用关键字 true或 false。
  • 两个布尔值都不区分大小写。 (通常运算符所返回的 boolean 值结果会被传递给控制流程。 )
<?php
 // == 是一个操作符,它检测两个变量是否相等,并返回一个布尔值
 if ( $action  ==  "show_version" ) {
    echo  "The version is 1.23" ;
};
 // 这样做是不必要的...
 if ( $show_separators  ==  TRUE ) {
    echo  "<hr>\n" ;
};
 // ...因为可以使用下面这种简单的方式:
 if ( $show_separators ) {
    echo  "<hr>\n" ;
};
 ?> 

转换为布尔值

  1. 将一个值转换成 boolean ,用 (bool) 或者 (boolean) 来强制转换。
  2. 当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE :

  1. 布尔值 FALSE 本身
  2. 整型值 0(零)
  3. 浮点型值 0.0(零)
  4. 空字符串,以及字符串 “0”
  5. 不包括任何元素的数组
  6. 不包括任何成员变量的对象(仅 PHP 4.0 适用)
  7. 特殊类型 NULL(包括尚未赋值的变量)
  8. 从空标记生成的 SimpleXML 对象
  9. 所有其它值都被认为是 TRUE (包括任何资源)。
<?php
var_dump ((bool)  "" );         // bool(false)
 var_dump ((bool)  1 );          // bool(true)
 var_dump ((bool) - 2 );         // bool(true)
 var_dump ((bool)  "foo" );      // bool(true)
 var_dump ((bool)  2.3e5 );      // bool(true)
 var_dump ((bool) array( 12 ));  // bool(true)
 var_dump ((bool) array());    // bool(false)
 var_dump ((bool)  "false" );    // bool(true)
 # -1 和其它非零值(不论正负)一样,被认为是 TRUE ! 
 ?> 

NULL类型

  • 特殊的 NULL 值表示一个变量没有值。 NULL 类型唯一可能的值就是 NULL 。
  • NULL 类型只有一个值,就是不区分大小写的常量 NULL 。
  • 在下列情况下一个变量被认为是 NULL :
    1. 被赋值为 NULL 。
    2. 尚未被赋值。
    3. 被 unset() 。
  • 检测变量是否为 NULL : is_null()
  • NULL就是为了占用变量名

转换到 NULL

使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。

Resource 资源类型

  • 资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
  • 资源说的不是一种具体的值,而是一个概念的多种数据的统称。
  • 就是打开php程序之外的任何东西。
  • 多种数据:上传文件,加载图片,路径,数据库等这些都称为“外部资源”,不是拍黄片本身就可以定义的数据。

* 数组和对象会单独讲解,此处不再讲解。

获取数据类型

  1. var_dump():
    • 优点:即可以查看变量类型,也可以查看值。
    • 缺点:类型和值的结果无法被接收,后续代码无法使用。
  2. gettype():获取数据类型
    • 返回的字符串的可能值为:
      1. “ boolean ”
      2. “ integer ”
      3. “ double ”(由于历史原因,如果是 float 则返回“double”,而不是“float”)
      4. “ string ”
      5. “ array ”
      6. “ object ”
      7. “ resource ”
      8. “ NULL ”
    • 优点:可以获取任何数据类型,获取之后可以给下方程序使用。
    • 缺点:功能强大导致效率低下,需要逐个匹配类型。
  3. is_*类型 系列变量类型
    • is_int() [别名 is_integer() ] 检测变量是否是整数 。
    • is_float() [别名 is_double] 检测变量是否是浮点型 。
    • is_string() 检测变量是否是字符串 。
    • is_array() 检测变量是否是数组 。
    • is_bool() 检测变量是否是布尔型 。
    • is_object() 检测变量是否是一个对象 。
    • is_numeric() 检测变量是否为数字或数字字符串 。
    • is_null() 检测变量是否为 NULL。
    • is_scalar() 检测变量是否是一个标量。
    • is_resource() 检测变量是否为资源类型 。
    • 优点:检测效率高,并且可以接收检测的结果。
    • 缺点:功能单一
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值