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 相关文章推荐
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
解析php中获取系统信息的方法
Jun 25 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
php生成短域名函数
Mar 23 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
详解php命令注入攻击
Apr 06 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 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将向Java靠拢
2006/10/09 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
项目实践之javascript技巧
2007/12/06 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
文秘自荐信
2013/10/20 职场文书
中文专业自荐书
2014/06/29 职场文书
高中语文教学反思范文
2016/02/16 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python