PHP数组函数的使用

  介绍

本篇内容介绍了“PHP数组函数的使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

取指定键名

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

 & lt; php ?
  raw 美元;=,(& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;zane # 39;,, & # 39;密码# 39;,=祝辞,& # 39;123456 & # 39;];//,自己用,PHP 实现
  function  onlyKeys(原始美元,美元键),{
  ,,,new 美元;=,[];
  ,,,foreach  (raw 美元;as  key 美元;=祝辞,val美元),{
  ,,,,,,,if  (in_array($键,键)美元),{
  ,,,,,,,,,,,新的美元(美元关键),=,val美元;
  ,,,,,,,}
  ,,,}
  ,,,,
  ,,,return 新美元;
  }//,用,PHP 内置函数实现
  function  newOnlyKeys(数组,美元,美元键),{
  ,,,return  array_intersect_key(数组,美元,array_flip(键)美元);
  }
  var_dump (onlyKeys(原始美元,,[& # 39;id # 39;,, & # 39;名字# 39;]));//,结果,[& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;zane # 39;】
  var_dump (newOnlyKeys(原始美元,,[& # 39;id # 39;,, & # 39;名字# 39;]));//,结果,[& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;zane # 39;] 

很明显简洁很多有木有!不过<代码> array_intersect_key 和<代码> array_flip> array_flip 函数,这个函数的功能是“将数组的键和值对调”,也就是键名变成值,值变成键名。我们传递的<代码> 键美元参数经过这个函数便从<代码>[0=比;& # 39;id # 39; 1=比;& # 39;名字# 39;]> [& # 39;id # 39;=比;0,& # 39;名字# 39;=比;1]> array_intersect_key 函数服务,<代码> array_intersect_key 函数的功能是“使用键名比较计算数组的交集”,也就是返回第一个参数数组中与其他参数数组相同键名的值。这样便实现了取指定键名的功能~(≧▽≦)/~啦!当然要详细了解这两个函数的功能还是要查PHP官方手册:array_fliparray_intersect_key

0 x02移除指定键名

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

 & lt; PHP ?
  raw 美元;=,(& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;zane # 39;,, & # 39;密码# 39;,=祝辞,& # 39;123456 & # 39;];//,用,PHP 内置函数实现
  function  removeKeys(数组,美元,美元键),{
  ,,,return  array_diff_key(数组,美元,array_flip(键)美元);
  }//,移除,id 键
  var_dump (removeKeys(原始美元,,[& # 39;id # 39;,, & # 39;密码# 39;]));//,结果,[& # 39;名字# 39;,=祝辞,& # 39;zane # 39;] 

和上一个例子相比本例只是将<代码> array_intersect_key 函数改为<代码> array_diff_key> array_intersect_key>
0 x03数组去重

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

 & lt; ? PHP
  $ input =,(& # 39;你是# 39;,=祝辞,666年,& # 39;小姐:我# 39;,=祝辞,233年,& # 39;他就是# 39;,=祝辞,233年,& # 39;she 如果# 39;,=祝辞,666];
  $ result =, array_unique(输入);
  var_dump()美元的结果);//,结果,[& # 39;你是# 39;,=祝辞,666年,& # 39;小姐:我# 39;,=祝辞,233]

嘿,用这个函数就能解决大部分问题了,但是有时候你可能会觉得它不够快,原因如下:
<强> array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。

因为这个函数会先将数组进行排序,所以速度可能在某些场景达不到预期的要求。
现在我们可以祭出我们的黑科技<代码> array_flip 函数,众所周知PHP里数组的键名是唯一的,所以在键名和值对调后重复的值便被忽略了。试想一下我们连续调用两次<代码> array_flip 函数是不是就相当于实现了<代码> array_unique 函数的功能呢?示例代码如下:

 & lt; ? PHP
  $ input =,(& # 39;你是# 39;,=祝辞,666年,& # 39;小姐:我# 39;,=祝辞,233年,& # 39;他就是# 39;,=祝辞,233年,& # 39;she 如果# 39;,=祝辞,666];
  $ result =, array_flip (array_flip(输入)美元);
  var_dump()美元的结果);//,结果,[& # 39;she 如果# 39;,=祝辞,666年,& # 39;他就是# 39;,=祝辞,233]

PHP数组函数的使用