php入门一之十大基本类型

基本类型

四种标量类型(bool,integer,float,string),三种组合类型(array,object,callback|callable),两种特殊类型(resource,null),一些伪类型[Pseudo-types](mixed,number,callback|callable,array|object,void)
(注:GetType函数可以获取变量类型,is_INT,is_string,is_bool等函数可判断变量类型。)

布尔(bool)
  • 值不区分大小写
整数(integer)
  • 语法
    十进制:[1-9] [ 0-9 ] * | 0
    十六进制:0 [XX] [0-9A-FA-F] +
    八进制:0 [0-7] +二进制:0b [01] +(注:php5.4.0才支持)
    整数:[+十进制| [+ - ]的十六进制| [+ - ]八进制| [+ - ]二进制?
  • 整数值大小
    如果PHP遇到超出整数类型范围的数字,它将被解释为float.32位系统上的整数的最大值是int(2147483647)即2 ^ 31-1,64位系统上的整数最大值是int(9223372036854775807)即2 ^ 63-1.
  • 整数的运算
    * PHP中没有整数除法运算符.1/2产生浮动0.5。*值可以被转换为一个整数,或者圆形()函数可以更精确地控制舍入

var_dump(25/7)// float(3.5714285714286)
var _dump((INT)(25/7)); // int(3)
var _ dump(round(25/7));

整数的转换要显式地将一个值转换为整数,请使用(INT)或(整数)强制转换。但是,在大多数情况下,不需要强制转换,因为如果运算符,函数或控制结构需要整数参数,则会自动转换值。也可以使用intval()函数将值转换为整数。
1,resource -> integer,那么结果将成为PHP在运行时分配给该值资源的唯一资源编号0.
2,bool ->integer,那么结果FALSE将产生0(零),TRUE并将产生1(一)0.
3,float ->integer,那么结果将只保留整数部分。

浮点数(float)
  • 语法
    LNUM [0-9]+
    DNUM ([0-9][.]{LNUM}) | ({LNUM}[.][0-9])
    EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
    (注:LNUM即长数,DNUMBER即双号)
  • 数值大小
  • 精度
    [PHP浮点数的一个常见问题的解答]//http://www.laruence.com/2013/03/26/2884.html

echo(int)((0.1 + 0.7 )* 10); //7

php float是采用IEEE 754表示精度,用54位二进制表示精度,在看似有穷的小数,在计算机的二进制表示里斯是无穷的,所以不是0.8而是0.79999999,强转只保留整数部分。所以是7。

字符串(string)
  • 语法
    单引号,双引号
  • 操作字符串
    • 连接
      使用.来连接
    • 字符串长度
      strlen() 函数
    • 字符串转大写或小写
      strtoupper() 函数和strtolower() 函数
    • 格式化字符串
      输出到界面vprintf()函数
      输出到变量sprintf() 函数
    • 拆分字符串
      explode() 函数
    • 移除字符串两侧的指定字符
      trim(字符串,指定字符)
    • 字符串转数组
      explode(指定字符,字符串)
数组(Arrays)
  • 定义:
    是一个有序映射(order map),一种将值与键关联的类型。可以看成是数组,向量,散列表(一个映射的实现),字典,集合,堆栈,队列等等,由于值可以是任意类型,所以又能作为树和多维数组。
  • 语法:
    用array()表示,如
 value,    
    key2 => value2,    
    key3 => value3,  
    ...)//也可以不用写键,默认从0开始自增 
$array= [   值1,值2,值3 ] //从PHP 5.4开始,您还可以使用短数组语法,它用[]替换数组)。
$array= [     
    key => value,    
    key2 => value2,    
    key3 => value3,    
    ... ]; 

一,key可以是Integer或String,value可以是任意类型。
二,除了Arrays和Object类型作为key会导致错误警告(非法偏移类型)外,其它类型作为key则会发生强转,有效十进制整数的字符串会转成整数,浮会去除小数部分转成整数,布尔会转成整数(真为1,假为0),零会转成空字符串。
三,数组可以同时包含整数和字符串键,因为PHP不区分索引数组和关联数组。
四,数组的键是唯一的,若相同则后面值覆盖前面的。
五,数组的键可以不用声明,那么它会按索引从0开始自增作为每个值的键。另外,一个key的值一定等于上一个key的值+1

  • 数组类型
    数值数组 - 带有数字 ID 键的数组
    关联数组 - 带有指定的键的数组,每个键关联一个值
    多维数组 - 包含一个或多个数组的数组
  • 数组的长度
    count() 函数用于返回数组的长度(元素的数量)
    sizeof() 函数
  • 数组的排序
    sort() - 对数组进行升序排列
    rsort() - 对数组进行降序排列
    asort() - 根据关联数组的值,对数组进行升序排列
    ksort() - 根据关联数组的键,对数组进行升序排列
    arsort() - 根据关联数组的值,对数组进行降序排列
    krsort() - 根据关联数组的键,对数组进行降序排列
    (特别注意,排序后的数组的key和value的对应关系是不变的,可以使用array_values函数对数组进行排序,方便取数组中最大或最小的元素。)
    利用数组中某个字段进行排序
    array_multisort( sortarray,SortRank, s o r t a r r a y , S o r t R a n k , sortlist)
    $sortarray是用来存储排序字段的数组,SortRank是排序条件,有以下两种:
    1. SORT_ASC - 默认,按升序排列。(A-Z)
    2. SORT_DESC - 按降序排列。(Z-A)
      $sortlist是需要排序的数组,以遇到的问题为例:
list = [{"name": "小明","sort": 1},{"name": "小强","sort": 2},{"name": "小翔","sort": 3}]
foreach($list as $list2){
    $sort[]=$list2["sort"];
}
array_multisort($sort,SORT_ASC,$list);
  • 数组元素的操作
    • 读取或修改数组元素
      array[key]或array{key} 语法来访问。
    • 删除数组元素
      unset($arr[5])函数来删除,注意key的值不会被改变。要重新索引数组,可以使用array_values函数
      array_pop() 函数删除数组中的最后一个元素
    • 添加数组元素
      array_push(array,value1,value2…)函数向数组尾部插入一个或多个元素
      array_unshift(array,value1,value2,value3…)函数用于向数组插入新元素。新数组的值将被插入到数组的开头
      arr[xxx] a r r [ x x x ] 的 方 法 可 用 于 添 加 自 定 义 键 名 的 元 素 , 另 外 也 可 考 虑 合 并 两 个 数 组 。 array3 = array_combine( array1, a r r a y 1 , array2);
对象(object)
  • 语法:

class foo
{
    function do_foo()
    {
        echo "Doing foo."; 
    }
}

$bar = new foo;
$bar->do_foo();
  • 其它类型转对象
    数组转换对象其中的属性通过键和相应的值来命名,除了数字键之外,除非迭代,否则这些数字键将不可访问。回调/可调用(Callbacks /可调参数)
回调/可调用(callback|callable)
  • 定义
    某些函数(如call _ user _ func()去回调某个方法或usort()去回调某个排序规则函数)接受用户定义的回调函数作为参数。函数不仅可以是简单的函数,还可以是对象方法,包括静态类方法。
资源(resource)
  • 定义
    一种特殊变量,保存了到外部资源的一个引用
  • 资源释放
    引用计数系统是Zend Engine的一部分,一个没有更多引用的资源会被自动检测到,并被垃圾收集器释放。出现这个原因,很少需要手动释放内存。(注:持久数据库链接是此规则的例外。它们不会被垃圾收集器销毁。)

你可能感兴趣的:(php)