PHP删除数组中指定值的元素常用方法实例分析【4种方法】


Posted in PHP onAugust 21, 2018

本文实例讲述了PHP删除数组中指定值的元素。分享给大家供大家参考,具体如下:

测试数组如下:

//这是一个测试数组
$testArr = array(
  't' => 'qq',
  'q' => 'qq',
  'b' => 'baidu',
  'a' => 'ali',
  'm' => 'xiaomi'
);

方法一:

//foreach遍历后unset删除,这种方法也是最容易想到的方法
function delByValue($arr, $value){
  if(!is_array($arr)){
    return $arr;
  }
  foreach($arr as $k=>$v){
    if($v == $value){
      unset($arr[$k]);
    }
  }
  return $arr;
}

测试:

$testArr = delByValue($testArr,'baidu');
print_r($testArr)

运行结果:

Array
(
    [t] => qq
    [q] => qq
    [a] => ali
    [m] => xiaomi
)

方法二:

//array_flip之后unset,这种方法有一个弊端,就是反转后由于有两个键值都为qq,有一个数据将会丢失,所以在使用时请谨慎)
function delByValue($arr, $value){
  $tempArr = array_flip($arr);
  unset($tempArr[$value]);
  return array_flip($tempArr);
}

测试:

$testArr = delByValue($testArr,'baidu');
print_r($testArr)

运行结果:

Array
(
    [q] => qq
    [a] => ali
    [m] => xiaomi
)

方法三:

//array_search,这种方法亦有弊端,array_search搜索到一个合适的值时便返回,所以在数组存在多个相关的值这种方法不适用)
function delByValue($arr, $value){
  $key = array_search($value,$arr);
  if(isset($key)){
    unset($arr[$key]);
  }
  return $arr;
}

测试:

$testArr = delByValue($testArr,'baidu');
print_r($testArr)

运行结果:

Array
(
    [t] => qq
    [q] => qq
    [a] => ali
    [m] => xiaomi
)

方法四:

//使用array_keys搜索指定的值再循环unset)
function delByValue($arr, $value){
  $keys = array_keys($arr, $value);
  var_dump($keys);
  if(!empty($keys)){
    foreach ($keys as $key) {
      unset($arr[$key]);
    }
  }
  return $arr;
}

测试:

$testArr = delByValue($testArr,'baidu');
print_r($testArr)

运行结果:

array(1) {
  [0]=>
  string(1) "b"
}
Array
(
    [t] => qq
    [q] => qq
    [a] => ali
    [m] => xiaomi
)

四种方法总结下来,真正比较可行的还是方法1和方法4了,至于这两种方法哪个更好,那就应该是具体情况具体分析了。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php zend解密软件绿色版测试可用
Apr 14 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
PHP print类函数使用总结
Jun 25 PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
php 将json格式数据转换成数组的方法
Aug 21 #PHP
php正确输出json数据的实例讲解
Aug 21 #PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 #PHP
php实现将数据做成json的格式给前端使用
Aug 21 #PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 #PHP
php ajax数据传输和响应方法
Aug 21 #PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 #PHP
You might like
PHP在Web开发领域的优势
2006/10/09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
Python中asyncore的用法实例
2014/09/29 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python实现网站表单提交和模板
2019/01/15 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
《菜园里》教学反思
2014/04/17 职场文书
大学生标准自荐书
2014/06/15 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js