前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP:为什么使用数组?

PHP:为什么使用数组?

原创
作者头像
zayyo
发布2023-12-20 23:10:15
780
发布2023-12-20 23:10:15
举报
文章被收录于专栏:zayyo前端zayyo前端

PHP 数组可能会让来自其他编程语言的开发者感到惊讶。

这个非常方便的结构可以存储各种类型的元素,但它并不完美。

简单介绍 PHP 数组

在核心层面上,数组是一个映射。它通常包含键和值,值可以是数组,让你能够构建树形和其他多维结构(如果有意义的话):

代码语言:php
复制
$array = [
    "foo" => "bar",
    "bar" => "foo",
];

$array2 = [
    "foofoo" => "barbar",
    "barbar" => $array,
];

键是可选的,如果你不指定键,PHP 会自动递增数字。

如果你阅读文档,学习和使用都相当容易。

PHP 数组的缺陷

PHP 中到处都是数组。我是说,真的随处可见。

它非常方便,因为你有大量内置的辅助工具和函数,可以进行各种排序、过滤和其他常见操作。

在我看来,这可能是使用这种结构的一个有效理由,特别是当你想要处理元素列表时。

然而,这并不是魔法。最大的问题是你几乎可以将任何东西放入数组中,有时这样做会使安全使用和测试变得更加困难。

在嵌套数组中,为了类型安全经常会写下好几行防御性代码,更不用说在典型的 PHP 脚本中会发现多个 isset() 或 empty() 了。

这本身并不是坏事,但有些开发者可能更喜欢具有定义结构的面向对象方法。

如果开始将关联数组传递给函数,会变得更糟糕,需要一遍又一遍地重复相同的测试。

代码语言:php
复制
function myfunc(array $params) {
    if (!isset($params['id'], $params['name']) {
        return 'Atchoum';
    }
}

// 对比

代码语言:php
复制
function myfunc(ParamObject $params) {}

如上例所示,在上述示例中,你只能使用内置的数组进行类型提示。

还有其他方法

PHP 还有其他你可能还不知道的结构:

生成器(generators):它们提供了几乎相同的功能(你可以在 foreach 循环中使用它们),但内存消耗更少,特别是如果不需要进行复杂操作(例如,不允许回滚操作)。

集合(collections):你会得到更强的类型,因为你的自定义集合只会处理特定的子类型,而不是更多(例如,Laravel 集合)。

总结

PHP 数组非常方便,但请注意,并不存在能够适用于所有情况的魔法解决方案。

我们看到了一些可以改进代码的替代方法,包括类型安全和可读性,同时保持了方便的语法。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档