关于 PHP 的数据类型(三)

5️⃣ (数组):

(一) 定义数组:

可以使用 语言结构来新建一个数组,它接受任意数量用逗号分隔的 () => () 对。

example1.php

注意

键(key) 可以是一个整数() 类型,也可以是字符串 () 类型;

值() 可以是任意类型的值;

键( )会有以下的强制转换:

包含合法整型值得字符串会被转换为整型。例如:键名 实际会被存储为 。但是 则不会强制准换,因为其不是一个合法的十进制数值;

浮点数也会被转换成为整型,意味着其小数部分会被舍去。例如:键名 实际会被储存为 ;

布尔值也会被转换成整型。即键名 实际会被存储为 , 会被存储为 ;

会被转换成空字符串 。 即键名会被转换成 ;

数组和对象不能用作键名。会导致警告错误 ;

如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了;

example2.php

php数组可以同时含有 和 类型的键名,因为PHP实际并不区分索引数组和关联数组。

如果对给出的值没有指定键名,则取出当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖;

example3.php

是可选项,如果未指定。PHP将自动使用之前用过的最大 键 作为新的键名;

example4.php

可以只对某些单元指定键名,其他的不指定键名;

example5.php

最后一个值 被自动赋予键名 , 是因为之前最大的整数键名是 ;

访问数组单元:

可以使用 的语法来访问数组中的单元;

example6.php

注意:方括号 和花括号 可以互换使用来访问数组单元, (例如: 和 在上实例中 );

使用方括号的语法 新建 / 修改 数组:

可以通过明示的设定其中的值来修改一个已有的数组;

这是通过在方括号内指定键名来给数组赋值实现的。也可以省略键名,在这种情况下给变量名加上一对空的方括号 ;

如果 还不存在,则会新建一个。

要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 函数;

example7.php

如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值 (但是最小为 0)。如果当前还没有整数索引,则键名将为 。

注意:这里所使用的最大整数键名 就在当前数组中。它只要在上次数组重新生成索引后,曾经存在过就行了;(有点绕,看示例);

example8.php

执行结果:

理论听着可能比较绕,但容易理解;

注意:强烈不建议 这样写,而是要写成 ;注意数组中单元中使用 或者 ;

这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。

也许有一天,PHP 开发小组可能会想新增一个常量或者关键字,或者用户可能希望以后在自己的程序中引入新的常量,那就有麻烦了。例如已经不能这样用empty和default这两个词了,因为他们是

转换为数组:

对于任何类型 , , , 类型,如果建一个值转换成数组,将得到一个仅有一个元素的数组,其键名是 ,该元素即为此标量的值。

与 完全一样。

如果一个 类型转换成一个 类型,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:

整数属性不可访问;

私有变量前会加上类名作前缀;

保护变量前会加上一个 作前缀。这些前缀的前后都各有一个 字符,这回导致一些不可预知的行为:

example9.php

NULL转换为 会得到一个空的数组。

6️⃣ 对象:

要创建一个对象 ,需要使用 语句来实例化;(后期详细说 );

转换成对象:

将一个对象转换成对象,它将不会有任何的变化;

如果其他任何类型的值转换成对象,将会创建一个内置类 的实例。

如果 转换成对象,则新实例为空;

转换成 将使用键名称为属性名并具有相对应的值,除了数字键,不迭代就无法被访问;

对于其他值,会包含进成员变量名:

7️⃣ :

特殊的 值表示一个变量都没有。 类型唯一可能的值就是 ;

以下情况变量会被认为是:

被赋值为 ;

为声明的变量;

被 的变量;

语法:

类型只有一个值,就是不区分大小写的常量 ;

转换到 :

使用 函数将一个变量转换成 , 将不会删除该变量或 其值。仅是返回 而已;

8️⃣ 资源:

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

以后说资源的相关函数及其相应资源类型;

转换为资源

由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

以上就是 的全部内容,欢迎纠错和补充,感谢!!!

相关题目:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180929G22SD600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券