`

认识php的变量类型

    博客分类:
  • Code
阅读更多

最近为了修改模板,开始一点点地看php的源码.这是我接触的第一种网络编程语言,和我擅长的C++要相差很远.初次接触,让我吃惊的是,尽管猜到了变量是以$开头的,却竟然找不到它的类型定义!hoho,有意思.然后就从网上搜到php教程,大概了解一下:

PHP 支持八种原始类型.
四种标量类型: boolean(布尔型), integer(整型), float(浮点型, 也作”double”), string(字符串)
两种复合类型: array(数组),object(对象),
最后是两种特殊类型: resource(资源),NULL
还有一些伪类型: mixed, number, callback

变量的类型通常不是由程序员设定的,是由 PHP 根据该变量使用的上下文在运行时决定的.

boolean值:
以下值被认为是 FALSE:
布尔值 FALSE
整型值 0(零)
浮点型值 0.0(零)
空白字符串和字符串 “0″
没有成员变量的数组
没有单元的对象(仅适用于 PHP 4)
特殊类型 NULL(包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括任何资源).

整型:
整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +).
如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x.
如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略.
如果给定的一个数超出了 integer 的范围,将会被解释为 float.
PHP 不支持无符号整数.
PHP 中没有整除的运算符.1/2 产生出 float 0.5.可以总是舍弃小数部分,或者使用 round() 函数.
决不要将未知的分数强制转换为 integer,这样有时会导致意外的结果.

  1. <?php
  2. echo (int) ( (0.1+0.7) * 10 ); // 显示为 7, 因为浮点结果内部表示为7.9999...
  3. ?>

字符串
string 是一系列字符.在 PHP 中,字符和字节一样,也就是说,一共有 256 种不同字符的可能性.这也暗示 PHP 对 Unicode 没有本地支持.请参阅函数 utf8_encode() 和 utf8_decode() 以了解有关 Unicode 支持.
一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围.
字符串可以用三种字面上的方法定义. 单引号 双引号 定界符
单引号
指定一个简单字符串的最简单的方法是用单引号(字符 ‘)括起来.
要表示一个单引号,需要用反斜线(\)转义.
单引号字符串中出现的变量和转义序列不会被变量的值替代.
双引号
和c++等语言类似
定界符
定界符语法(”<<<").应该在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串.

  1. $str = <<<EOD
  2. Example of string
  3. spanning multiple lines
  4. using heredoc syntax.
  5. EOD;

结束标识符必须从行的第一列开始.结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外.这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符.同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符.
不能用定界符语法初始化类成员.用其它字符串语法替代.
变量解析
当用双引号或者定界符指定字符串时,其中的变量会被解析.有两种语法,一种简单的和一种复杂的.
简单语法
如果遇到美元符号($),解析器会尽可能多地取得后面的字符以组成一个合法的变量名.如果想明示指定名字的结束,用花括号把变量名括起来.
同样也可以解析数组索引或者对象属性.对于数组索引,右方括号(])标志着索引的结束.对象属性则和简单变量适用同样的规则,尽管对于对象属性没有像变量那样的小技巧.
复杂(花括号)语法
用此语法可以在字符串中包含任何在名字空间的值.仅仅用和在字符串之外同样的方法写一个表达式,然后用 { 和 } 把它包含进来.因为不能转义”{”,此语法仅在 $ 紧跟在 { 后面时被识别(用”{\$”或者”\{$”来得到一个字面上的”{$”).
访问和修改字符串中的字符
字符串中的字符可以通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问和修改.
字符串可以用”.”(点)运算符连接.注意这里不能用”+”(加)运算符.

数组
PHP 中的数组实际上是一个有序图.图是一种把 values 映射到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性.因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树.
定义 array()
可以用 array() 语言结构来新建一个 array.它接受一定数量用逗号分隔的 key => value 参数对.
key 可以是 integer 或者 string.如果键名是一个 integer 的标准表达方法,则被解释为整数(例如 “8″ 将被解释为 8,而 “08″ 将被解释为 “08″).key 中的浮点数被取整为 integer.PHP 中没有不同的数字下标和关联下标数组,数组的类型只有一种,它可以同时包含整型和字符串型的下标.
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一.如果指定的键名已经有了值,则该值会被覆盖.(自 PHP 4.3.0 起,如果给一个当前最大键名是负值的数组添加一个新值,则新生成的的索引将为零(0).)
不能用数组和对象作为键名.这样做会导致一个警告:Illegal offset type.
如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值 + 1.如果当前还没有整数索引,则键名将为 0.如果指定的键名已经有值了,该值将被覆盖.这里所使用的最大整数键名不一定当前就在数组中.它只要在上次数组重新生成索引后曾经存在过就行了.
unset() 函数允许取消一个数组中的键名.要注意此时数组将不会重建索引.重建索引:array_values();
foreach 控制结构是专门用于数组的.它提供了一个简单的方法来遍历数组.详细见此:http://cn2.php.net/manual/zh/control-structures.foreach.php
关于数组的其他详细介绍,可以到这个页面:http://cn2.php.net/manual/zh/language.types.array.php

对象
要初始化一个对象,用 new 语句将对象实例到一个变量中.

  1. <?php
  2. class foo
  3. {
  4.    function do_foo()
  5.    {
  6.        echo "Doing foo.";
  7.    }
  8. }
  9.  
  10. $bar = new foo;
  11. $bar->do_foo();
  12. ?>

类似c++中的类和对象概念.

资源
资源是一种特殊变量,保存了到外部资源的一个引用.资源是通过专门的函数来建立和使用的.

NULL
特殊的 NULL 值表示一个变量没有值.NULL 类型唯一可能的值就是 NULL.
在下列情况下一个变量被认为是 NULL:被赋值为 NULL,尚未被赋值,被 unset().
NULL 类型只有一个值,就是大小写敏感的关键字 NULL.

伪类型
mixed
mixed 说明一个参数可以接受多种不同的(但并不必须是所有的)类型.
例如 gettype() 可以接受所有的 PHP 类型,str_replace() 可以接受字符串和数组.
number
number 说明一个参数可以是 integer 或者 float.
callback
有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数.Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法.
一个 PHP 函数用函数名字符串来传递.可以传递任何内置的或者用户自定义的函数,除了 array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset().
一个对象的方法以数组的形式来传递,数组的下标 0 指明对象名,下标 1 指明方法名.
对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可.
一个callback实例:

<?php
 
/* Create new object of class */
$ses_class = new session();
 
/* Change the save_handler to use the class functions */
session_set_save_handler (array(&$ses_class, '_open'),
                        
array(&$ses_class, '_close'),
                        
array(&$ses_class, '_read'),
                        
array(&$ses_class, '_write'),
                        
array(&$ses_class, '_destroy'),
                        
array(&$ses_class, '_gc'));
 
/* Start the session */
session_start();
 
class session
{
  
/* Define the mysql table you wish to use with
       this class, this table MUST exist. */

  
var $ses_table = "sessions";
 
  
/* Change to 'Y' if you want to connect to a db in
       the _open function */

  
var $db_con = "Y";
 
  
/* Configure the info to connect to MySQL, only required
       if $db_con is set to 'Y' */

  
var $db_host = "localhost";
  
var $db_user = "username";
  
var $db_pass = "password";
  
var $db_dbase = "dbname";
 
  
/* Create a connection to a database */
  
function db_connect() {
   ............
  
}
 
  
/* Open session, if you have your own db connection
       code, put it in here! */

  
function _open($path, $name) {
   .............
  
}
 
  
/* Close session */
  
function _close() {
   ..............
  
}
 
  
/* Read session data from database */
  
function _read($ses_id) {
   .................
  
}
 
  
/* Write new data to database */
  
function _write($ses_id, $data) {
   ...........
  
}
 
  
/* Garbage collection, deletes old sessions */
  
function _gc($life) {
   ............
  
}
}
?>

以上内容在http://cn2.php.net/manual/zh/language.types.php的基础上收集整理。

code, php
分享到:
评论

相关推荐

    【自学PHP】第二课:PHP数据类型

    ### PHP 数据类型详解 #### 一、PHP 数据类型概述 PHP 支持多种数据类型,这些数据类型可以分为...通过上述讲解,我们对 PHP 中的数据类型及其转换有了较为全面的认识,这对于编写高质量的 PHP 代码是非常有帮助的。

    深入理解PHP内核

    在PHP中,变量并不需要明确的类型声明,PHP会根据上下文自动推断变量的类型,例如,同一个变量可以一会儿是字符串,一会儿是整数,这种灵活性给Web开发者带来了便利,但同时也可能引入一些难以察觉的错误。...

    认识PHP的基本语法

    本电子书旨在帮助读者掌握PHP的基本语法,涵盖数据类型、变量操作、控制结构、函数、类以及正则表达式等核心概念。 数据类型在PHP中是动态的,意味着不需要显式声明变量类型,而是在赋值时由PHP引擎自动决定。基本...

    【基础篇】第12篇:PHP代码审计笔记--弱类型存在的安全问题1

    PHP是一种弱类型语言,这意味着开发者在声明变量时无需明确指定其数据类型。PHP会根据变量赋值的情况自动进行类型转换。这种特性在提高编程效率的同时,也带来了一系列潜在的安全隐患。 **1.2 弱类型比较问题** 当...

    php钩子示例-认识php钩子

    2. **PHP钩子的类型** - **动作钩子**:当PHP程序到达特定的代码段时,会触发动作钩子。开发者可以注册函数到这些钩子上,当钩子被触发时,注册的函数会被调用。这通常用于在程序执行的某个阶段插入自定义代码。 -...

    不错的适合练手、课程设计、毕业设计的PHP项目源码:PHP校园二手信息网站的设计与开发(源代码+论文).rar

    通过这个项目,你可以学习到PHP的基本语法、变量、数据类型、控制结构(如if/else,switch)、函数、类和对象等基础知识。 2. MVC架构:此项目可能采用了MVC(Model-View-Controller)模式,这是一种常见的Web应用...

    PHP5与MySQL5从入门到精通.rar

    2.2 数据类型 2.2.1 布尔型 2.2.2 整型 2.2.3 浮点型 2.2.4 字符串 2.2.5 数组 2.2.6 对象 2.2.7 资源 2.2.8 NULL 2.2.9 类型转换 2.3 变量 2.3.1 变量的赋值 2.3.2 预定义变量 2.3.3 变量作用域 ...

    php程序设计,php课件PPT.zip

    2. **变量和数据类型**:理解PHP中的变量定义、作用域(global, local, static, global static)以及基本数据类型(integer, float, string, boolean, array, object, null)。 3. **控制结构**:掌握条件语句(if,...

    php ppt课件_PHP第一堂课_

    【PHP第一堂课:认识PHP及其基础应用】 在学习编程语言的过程中,PHP是众多开发者首选的服务器端脚本语言之一,尤其在Web开发领域占据着重要地位。本课件将带你走进PHP的世界,理解它的基本概念,以及如何创建和...

    php扩展学习PDF

    4. **类型系统**:介绍PHP的弱类型系统以及如何在C语言中处理PHP的变量和数据类型。 5. **对象模型**:深入理解PHP的对象模型,包括类、对象、继承、接口、 Trait等,以及如何在C语言中实现这些特性。 6. **错误和...

    认识并使用PHP超级全局变量

    在PHP编程语言中,超级全局变量是一类特殊变量,它们在任何函数或方法内部都可直接访问,无需使用`global`关键字进行声明。这些变量在脚本的全局作用域中始终可用,使得开发者能轻松地处理来自不同源的数据,如HTTP...

    PHP内核介绍及扩展开发指南

    在PHP内核中,变量的存储是通过`zval`结构实现的,这是一个核心概念,用于封装各种类型的PHP变量,包括整型、浮点型、字符串、数组、对象等。`zval`结构的设计充分体现了PHP的动态性和灵活性,同时也优化了内存管理...

    十天学会PHP(入门教程)

    你将学习如何定义变量、数据类型(如整型、字符串、布尔型、数组等)、运算符以及控制流程语句(如if/else,for,while循环)。 2. **字符串和变量操作**:在PHP中,字符串处理非常常见,包括拼接、查找、替换等...

    PHP语言入门教程&demo.zip

    本教程将带你了解PHP的基础知识,包括语法、变量、数据类型、流程控制以及函数等核心概念。 ### 1. PHP基础知识 #### 1.1 语法结构 PHP语句通常以`&lt;?php`开始,以`?&gt;`结束。在HTML文件中,你可以将PHP代码插入到...

    【精品】深入了解php底层机制.docx

    PHP变量的管理是理解其底层机制的关键。变量由Zval结构体表示,它能存储整数、浮点数、字符串、数组和资源等多种类型。PHP的变量作用域规则也是基于Zval进行管理的。弱类型特性使得类型转换在运行时自动进行,但同时...

    《PHP快速入门指南(第7版)》

    PHP变量是存储数据的容器,它们的生命周期和作用域(局部变量、全局变量)对程序运行有着重要影响。在PHP中,数组提供了一种方便的方式来处理多个数据项,而静态变量则可以在函数调用之间保持其值。常量则是不能被...

    大道PHP 第六章 doc

    - PHP的数据类型包括基本类型(如整型、浮点型、字符串、布尔型)、复合类型(如数组、对象)、特殊类型(如NULL、资源)。 - 数据类型间的转换在PHP中是自动或手动进行的,有时会出现动态类型转换。 - 变量是...

    细说php 1-5章

    第2章:变量与数据类型 在这一章,读者将学习PHP中的基本数据类型,如整型、浮点型、字符串和布尔型。此外,还涵盖了数组,它是处理多值数据的重要工具。读者还将接触到变量的概念,了解如何声明、赋值和使用变量,...

    php(十天学会php教程).rar

    1. **基础语法**:了解PHP的注释、变量、数据类型(如整型、浮点型、字符串、布尔型、数组、对象等)、常量以及变量作用域(全局、局部、静态)。 2. **流程控制**:学习条件语句(如if、else、switch)和循环结构...

    三天学会php 太好了

    学习PHP首先要理解变量、数据类型(如字符串、整型、浮点型、布尔型等)、常量、运算符、流程控制(条件语句和循环语句)以及函数的使用。 2. **PHP与MySQL的结合**:在描述中提到的"mysql",意味着这份资料可能...

Global site tag (gtag.js) - Google Analytics