这个属于PHP操作数组的基本应用,但是小应用有大用途,而且一不留心操作错了,还可能给你造出意想不到的bug。

最近写程序的时候要拼装一个检索数组,要求每个栏目的检索条件还不一样,于是乎将获取到的检索条件数组把不属于该栏目的剔除,开始想都没想直接用了unset,测试了一下,没问题;但是多测试几个后就出现问题了,仔细检查后发现unset虽然删掉了指定键值的数组元素,但是这个函数返回的结果原来的兼职序列不变,而我要的是自动更新。

demo:

$arr=['aaaa','bbbb','cccc','dddd'];

unset($arr[1]);

输出结果:

Array (

[0] => "aaaa"

[2] => "cccc"

[3] => "dddd"

)

如果你想让数组重新排列,按照索引连续的排序,可以使用array_values函数。

array_values($arr);

这样你就会等到一个连续索引的数组了:

Array (

[0] => "aaaa"

[1] => "cccc"

[2] => "dddd"

)

当然也可以使用array_splice函数(删除一个元素,不保持索引),一步达成,示例如下:

$arr=['aaaa','bbbb','cccc','dddd'];

array_splice($arr,1,1);

上面示例代码中,array_splice第二个参数是必需的,是要删除元素的开始位置, 0表示第一个元素, 如果该值设置为正数,则从数组中该值指定的偏移量开始移除。如果该值设置为负数,则从数组末端倒数该值指定的偏移量开始移除。 -2 意味着从数组的倒数第二个元素开始。

结果:

Array (

[0] => "aaaa"

[1] => "cccc"

[2] => "dddd"

)

array_diff()函数:按值删除多个元素,保持索引,与 unset 类似,array_diff 也将保持索引。

$arr = ['aaaa','bbbb','cccc','dddd'];

$res = arrar_diff($arr,['aaaa','cccc']);

var_dump($arr);

输出结果:

Array (

[1] => "bbbb"

[3] => "dddd"

)

array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。 该函数比较两个(或更多个)数组的键名,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名。

$a1=array("a"=>"red","b"=>"green","c"=>"blue");

$a2=array("a"=>"red","c"=>"blue","d"=>"pink");

$result=array_diff_key($a1,$a2);

print_r($result);

结果:Array ( [b] => green )

根据自己实际需要进行选择就是了。

php根据键值去除数组中的某个元素_php数组删除元素 删除指定键值元素相关推荐

  1. 要求将数组中的0项去掉,将不为0的值存入一个新的数组,

    package Day05;/*** 7.* 现在有如下一个数组:* int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};* 要求将以上数组中的0项去掉,将不 ...

  2. js从一个数组中筛选出另一个数组中存在的值

    js从一个数组中筛选出另一个数组中存在的值 这里从arr中筛选arr1中存在的值,arr2为筛选结果数组 let arr=["1","2","3&qu ...

  3. C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

    1. 题目 请编写一个函数function,它的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后. 2 .温馨提示 C语言试题汇总里可 ...

  4. js将数组中相同项放在一个数组

    js将数组中相同项放在一个数组 原本数组长这样:图一 想将数组中相同项放在一个数组 得到:图二 转换中也可以得到:图三 方法: sortArr(arr, str) {var _arr = [],_t ...

  5. 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 我们首先会想到常规方法:创建一个临时数组,遍历所给数组中的所有元素,将偶数 ...

  6. php弹出第一个数组中,PHP array_search始终返回数组的第一个键

    参见英文答案 > PHP in_array() / array_search() odd behaviour                                    2个 我最近发 ...

  7. java数组求和递归,js数组去重 数组拼接 替换数组中的指定值 递归数组 判断数组中是否存在指定值 数组求和 根据条件判数组值...

    // 数组去重 var arr1 = [1,1,2,3,4,5,6,3,2,4,5,'a','b','c','a',6,7,8,3,5,7,8,34] // console.log(Array.fro ...

  8. html判断数组中存在不,js判断数组中是否已存在某个值,indexOf的使用说明

    indexOf()方法返回在该数组中的元素位置,如果它不存在则返回-1 //数组格式为[ "Name","LangShen","AGE",& ...

  9. 原生JS去除二维数组中重复了的一维数组

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

最新文章

  1. 数据库数据满足树结构时,求一个结点的子结点有哪些
  2. win7磁盘清理_window7越来越卡?系统残余文件太多,磁盘清理可以搞定!!
  3. JAVA学习日志(7-1-继承)
  4. 30 个实例详解 TOP 命令
  5. 51单片机按键控制数码管0~9_7种常见的51单片机时钟电路图
  6. VS2012连接数据库问题
  7. Android 在已有工程中实现微信图片压缩
  8. ssm框架重定向_精选 SSM 框架面试题整理
  9. 安装Rational Rose所踩得坑
  10. UE4 粒子特效基础学习 ——仿英雄联盟亮牌效果(图标触发特效的制作)
  11. 软件生命周期及工作分解结构
  12. spa文件转换html,spa.html
  13. 如何将逐小时数据处理为逐日数据
  14. 龟背驼腰下一句更精彩
  15. 查看自己电脑应用对应的端口号
  16. UEFI开发探索94 – 迷宫小游戏
  17. Python:每日一题之四平方和
  18. 整流线性单元(Relu)及其变种(Leaky Relu、PRelu、ELU、SELU、CRelu、RRelu)
  19. MATLAB Mann-Kendall突变检验 (mk突变检验)
  20. 深度学习的坎坷六十年

热门文章

  1. 不爱跳槽、月薪集中在 8K-17k、五成欲晋升为技术Leader|揭晓中国开发者真实现状
  2. 面试常考,项目易错!C/C++中的字节对齐
  3. 人人都可做 AI 开发者,云知声 AI 开放平台重磅上线
  4. 全新的 Discuz! Q 来了!
  5. 限时福利:入群锁定大会直播+PPT,听百位 AI 技术大咖、20 大热门主题分享!...
  6. AI “闯入”北极圈
  7. 起底方舟编译器的引用计数!
  8. 为什么说即便是新手,也应该学习微服务?
  9. 甲骨文员工谈被裁原因;《绝地求生》停机维护;谷歌正研发折叠屏样机 | 极客头条...
  10. 遇冷的斗鱼直播,还“斗”得动吗?| 畅言