首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《PHP技术大全·第一卷》之数组 Array 细致解读

《PHP技术大全·第一卷》之数组 Array 细致解读

跟其它语言的区别

学习过其它编程语言如 Java,C 等同学应该知道,这些语言的数组拥有以下两大特点:

数组索引必须为整数,并且默认从0开始计算;

数组元素值必须为同一种类型。

官方介绍 PHP 数组实际上是一个有序的映射(map),映射是一种把多个值(values)关联到对应的多个键(keys)的类型。这种映射类型在很多方面做了优化,因此可以把它当成真正的数组(就是上面说的其它编程语言的数组),或列表(向量)(list(vector)),散列表(hashTable),字典(dict),集合(collection),栈(stack),队列(queue)以及更多的可能,这些都是比较常用的数据结构。由于数组的元素值又可以是一个数组,因此树形结构和多维数组也是被允许的。当然,如果同学们想了解更多关于数据结构的知识,建议购买 C语言描述《数据结构与算法》一书,在这里笔者就不做过多介绍了。

数组键(key)的约定 PHP数组的键(key)可以是整型或者字符串类型,而值(value)可以是任意类型。

如果你给数组的键不是整型或者字符串类型,则PHP会在内部对键的进行类型转换(Type Casting),通过下面的代码示例我们来看下 PHP 是如何进行数组键的类型转换的。

数组常见用法

给数组末尾追加值

,请不要使用 ,因为前者性能会高出很多而且语法简洁。

list 访问数组值

,这样就很快给变量赋值了。

访问字符串的指定位置的字符

,但是字符串并非数组,这里只是 PHP 提供的便捷访问字符串中的字符的一种方式

完全删除数组中指定索引的元素

,这里要注意最好得到的是 而不是 ,另外,我们不能对字符串指定索引的字符进行unset,例如 会导致报错并且不会产生任何效果

访问忘记给数组键加引号访问数组

,由于 hi 和 nihao 都忘记添加引号,因此 PHP 会报 E_NOTICE 级别的通知错误,会但在生产环境下通常 notice 的报错通常会被隐藏,但是呢,PHP 还是会默默地在背后给你做一件事,那就是把定义两个常量: ,但是错误信息还是持续报出来(实现设置 ):「PHP Notice: Use of undefined constant nihao」

强制转换为数组类型

可以对整数,浮点数,字符串,布尔,资源(resource)类型进行强制转换,转换结果示例:

将一个object对象转换成数组会比较神奇,规则如下:

若为 public 则对象属性名就会成为数组的键;

若为 protected 则对象属性名就会在前面带上一个 null(\0)字符,然后接上一个 * 字符,最后在对象属性前面增加一个 null 字符,于是就组合对应的数组键;

若为 private 则对象属性名会在前面带上一个 null 字符,然后接上最后一次集成的属性所属的类名,接着又是一个 null 字符,于是就组合成了对应的数组键; 示例如下:

数组元素的修改

我们可以使用 PHP 引用的来对数组进行修改,代码示例:

最佳实践

PHP 数组包含很多实用的函数,请参考数组函数,记忆一些百利而无一害;

PHP 数组通常关系着系统的性能,所以在定义函数的时候,如果数组参数能够传引用就可以减少性能损耗,因为有时候数组参数会比较大;

本文永久更新链接:

https://gitee.com/nodestudy/phpgod/blob/master/zh/02.4.md

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222A13S2I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券