• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何巧用 PHP 数组函数

php 搞代码 3年前 (2022-01-21) 17次浏览 已收录 0个评论

0x00 前言

PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实现日常开发的功能。但是我发现好像很多小伙伴都忽略了内置函数的作用(比如我自己就编写过一些有关数组操作的代码然后发现PHP自带了~~,善用 PHP 内置函数能极大的提高开发效率和运行效率(内置函数都是用 C 写的效率比用 PHP 写的高很多),所以本文便总结了一些在常见场景中利用 PHP 内置函数的实现方法。此外如果想更深入的学习有关 PHP 数组函数最好还是去查 PHP 手册!

推荐:《php培训》

0x01 取指定键名

对于某些关联数组,有时候我们只想取指定键名的那部分,比如数组为 ['id' => 1, 'name' => 'zane', 'password' => '123456'] 此时若只想取包含 id 和 name 的部分该怎么实现呢?下面直接贴代码。

<?php$raw = ['id' => 1, 'name' => 'zane', 'password' => '123456'];// 自己用 PHP 实现function onlyKeys($raw, $keys) {    $new = [];    foreach ($raw as $key => $val) {        if (in_array($key, $keys)) {            $new[$key] = $val;        }    }        return $new;}// 用 PHP 内置函数实现function newOnl<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码)网8</i><strong>搞代gaodaima码</strong>yKeys($array, $keys) {    return array_intersect_key($array, array_flip($keys));}var_dump(onlyKeys($raw, ['id', 'name']));// 结果 ['id' => 1, 'name' => 'zane']var_dump(newOnlyKeys($raw, ['id', 'name']));// 结果 ['id' => 1, 'name' => 'zane']

很明显简洁很多有木有!不过 array_intersect_key 和 array_flip 是什么鬼?这里简单的介绍一下这两个函数的作用,首先是 array_flip 函数,这个函数的功能是「将数组的键和值对调」,也就是键名变成值,值变成键名。我们传递的 $keys 参数经过这个函数便从 [0 => 'id', 1 => 'name'] 转变为了 ['id' => 0, 'name' => 1]。

这样做的目的是为了向 array_intersect_key 函数服务,array_intersect_key 函数的功能是「使用键名比较计算数组的交集」,也就是返回第一个参数数组中与其他参数数组相同键名的值。这样便实现了取指定键名的功能 ~(≧▽≦)/~啦!当然要详细了解这两个函数的功能还是要查 PHP 官方手册:array_flip array_intersect_key

0x02 移除指定键名

有了上一个例子做铺垫,这个就简单讲讲啦,道理是大同小异滴。

<?php$raw = ['id' => 1, 'name' => 'zane', 'password' => '123456'];// 用 PHP 内置函数实现function removeKeys($array, $keys) {    return array_diff_key($array, array_flip($keys));}// 移除 id 键var_dump(removeKeys($raw, ['id', 'password']));// 结果 ['name' => 'zane']

和上一个例子相比本例只是将 array_intersect_key 函数改为 array_diff_key,嗯……相信大家能猜出来这个函数的功能「使用键名比较计算数组的差集」,刚好和 array_intersect_key 的功能相反而已。官方手册:array_diff_key

0x03 数组去重

这个相信大家都有这个需求,当然 PHP 也内置了 array_unique 函数供给大家使用,如下例:

<?php$input = ['you are' => 666, 'i am' => 233, 'he is' => 233, 'she is' => 666];$result = array_unique($input);var_dump($result);// 结果 ['you are' => 666, 'i am' => 233]

嘿,用这个函数就能解决大部分问题了,但是有时候你可能会觉得它不够快,原因如下:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何巧用 PHP 数组函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址