• 动态类型
    • 初始化变量
    • 改变变量
    • 做一些处理
  • Array
    • 必须使用方形大括号来定义数组
    • 必须使用双冒号来定义哈希键
  • Boolean
  • 浮点型/双精度浮点
  • Integer
  • 整数溢出
  • 对象
  • String

    动态类型

    动态变量与PHP中的变量完全相同。 它们可以不受限制地分配和重新分配到不同的类型。

    动态变量必须声明为关键字var。 其行为与PHP中几乎相同:

    1. var a, b, c;
    初始化变量
    1. let a = "hello", b = false;
    改变变量
    1. let a = "hello", b = false;
    2. let a = 10, b = "140";
    做一些处理
    1. let c = a + b;

    它们有八种类型

    类型说明
    array数组是有序映射。 映射是将值与键关联的类型。
    boolean布尔值表示真值。 它可以是truefalse
    float/double浮点数 浮点的大小依赖于平台。
    integer整数 整数的大小与平台有关。
    null特殊的空值表示一个没有值的变量。
    object对象抽象和PHP的类似。
    resource资源,对外部资源的引用。
    string一个string是一系列字符,其中字符与字节相同。

    查看PHP手册中关于这些类型的更多信息。

    Array

    Zephir中的数组实现与PHP中的基本相同: 为几种不同用途优化的有序映射; 它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列,甚至可能更多。 由于数组值可以是其他数组,树和多维数组也是可能的。

    定义数组的语法与PHP略有不同:

    必须使用方形大括号来定义数组
    1. let myArray = [1, 2, 3];
    必须使用双冒号来定义哈希键
    1. let myHash = ["first": 1, "second": 2, "third": 3];

    只能使用长值和字符串值作为键:

    1. let myHash = [0: "first", 1: true, 2: null];
    2. let myHash = ["first": 7.0, "second": "some string", "third": false];

    Boolean

    布尔值表示真值。 它可以是 true, 也可以是 false:

    1. var a = false, b = true;

    浮点型/双精度浮点

    浮点数(也称为浮点数、双数或实数)。 浮点文字是具有一个或多个数字的表达式, 后跟句点 (.), 后跟一个或多个数字。 浮点的大小取决于平台, 但精度约为14位十进制数字的最大值为 ~ 1.8 e308 是一个通用值 (64位 IEEE 格式)。

    1. var number = 5.0, b = 0.014;

    浮点数的精度有限。 虽然这取决于系统, 但 Zephir 使用 php 使用的相同 IEEE 754 双精度格式, 这将由于舍入的1.11e-16 的顺序而产生最大的相对误差。

    Integer

    整数 一个整数的大小依赖于平台,尽管通常的值是20亿左右(32位)。 64位平台的最大值通常在9E18左右。 PHP不支持无符号整数,所以Zephir也有这个限制:

    1. var a = 5, b = 10050;

    整数溢出

    与PHP相反,Zephir不会自动检查整数溢出。 像在C中一样,如果你做的操作可能会返回一个大的数字,你应该使用unsigned longfloat来存储它们:

    1. unsigned long my_number = 2147483648;

    对象

    Zephir允许从PHP对象实例化、操作、调用方法、读取类常量等:

    1. let myObject = new \stdClass(),
    2. myObject->someProperty = "my value";

    String

    一个string是一系列字符,其中字符与字节相同。 与PHP一样,Zephir只支持256个字符集,因此不提供本地Unicode支持。

    1. var today = "friday";

    在Zephir中,字符串文字只能使用双引号指定(类似在C或Go中)。 单引号用于char数据类型。

    字符串中支持下列转义序列:

    序列说明
    \t水平制表符
    \n换行
    \r回车
    \反斜线
    \"双引号
    1. var today = "\tfriday\n\r",
    2. tomorrow = "\tsaturday";

    在 Zephir中, 字符串不支持像 php 中那样的变量解析; 您需要改为使用串联:

    1. var name = "peter";
    2. echo "hello: " . name;