php 删除一维数组中某一个值元素的操作方法

php 删除一维数组中某一个值元素的操作方法

1. 自己写for循环

从array里去掉$tmp这个元素的值

?
1
2
3
4
5
6
7
8
9
10
<?
php
$
tmp
=
'324'
;
$
arr
=
array
(
'0' => '321',
'1' => '322',
'2' => '323',
'3' => '324',
'4' => '325',
'5' => '326',
);

代码

?
1
2
3
4
5
foreach( $arr as $k=>$v) {
 
if($tmp == $v) unset($arr[$k]);
}
print_r($arr);
?>

此时

?
1
2
3
4
5
6
7
8
Array
(
 
[0] => 321
 
[1] => 322
 
[2] => 323
 
[4] => 325
 
[5] => 326
)

要重置索引,加上一句

?
1
2
3
4
5
6
foreach( $arr as $k=>$v) {
 
if($tmp == $v) unset($arr[$k]);
}
$arr = array_values($arr);
print_r($arr);
?>

此时结果

?
1
2
3
4
5
6
7
8
Array
(
 
[0] => 321
 
[1] => 322
 
[2] => 323
 
[3] => 325
 
[4] => 326
)

array_merge()也可以实现同样的效果

?
1
2
3
4
5
6
foreach( $arr as $k=>$v) {
 
if($tmp == $v) unset($arr[$k]);
}
$arr = array_merge($arr);
print_r($arr);
?>

此时结果

?
1
2
3
4
5
6
7
8
Array
(
 
[0] => 321
 
[1] => 322
 
[2] => 323
 
[3] => 325
 
[4] => 326
)

2.优先使用php自带函数,因为那是用C实现的,比自己写效率高。

使用array_search和array_splice,这里array_splice自动实现重置序列值。

?
1
2
3
$key=array_search($tmp ,$arr);
array_splice($arr,$key,1);
var_dump($arr);

此时结果

?
1
2
3
4
5
6
7
8
Array
(
 
[0] => 321
 
[1] => 322
 
[2] => 323
 
[3] => 325
 
[4] => 326
)

最佳实践

?
1
2
$arr = array_merge(array_diff($arr, array($tmp)));
var_dump($arr);

结果

?
1
2
3
4
5
6
7
8
Array
(
 
[0] => 321
 
[1] => 322
 
[2] => 323
 
[3] => 325
 
[4] => 326
)

这里,如果数组元素是复杂数据结构,同样能够实现比较。当然数据本身仍然是一维的。

上面的例子中$tmp是一个值,如果$tmp是一个数组或者其他复杂数据结构,从$array中删除所有$tmp包含的元素,上面的方法同样有效

?
1
2
$arr = array_merge(array_diff($arr, $tmp));
var_dump($arr);

转载:https://www.jb51.net/article/134176.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112417.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于Java swing+mysql+eclipse的【水电费管理系统】

    基于Java swing+mysql+eclipse的【水电费管理系统】本项目为前几天收费帮学妹做的一个项目,Javaswing项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考。CSDN9.9赞助下载:https://download.csdn.net/download/weixin_44893902/20545860白嫖:加QQ68872185一、效果演示主要功能:普通用户:用户用水用电查询(根据时间查询、导出Excel)管理员用户:用户信息管理>>平台用户信息查询(修改信.

    2022年6月17日
    21
  • Linux京东签到教程,京东POP店铺签到有礼操作指南「建议收藏」

    Linux京东签到教程,京东POP店铺签到有礼操作指南「建议收藏」目录1产品概述2POP签到有礼设置2.1创建签到2.1.1第一步:签到活动设置2.1.2第二步:签到规则设置—-店铺抽奖2.1.3第二步:签到规则设置—-连续签到2.1.4第三步:选择引流商品2.1.5第四步:完成创建2.2签到有礼-当前活动2.3签到有礼-全部活动2.4用户前台入口3京麦签到工具介绍1产品概述1.产品价值:提高C端用户到店频次,提高店铺粘性,借机达到商品转化的目的。2…

    2022年9月18日
    4
  • gmapping matlab实现_Gmapping笔记[通俗易懂]

    gmapping matlab实现_Gmapping笔记[通俗易懂]2D-slam激光slam:开源代码的比较HectorSLAMGmappingKartoSLAMCoreSLAMLagoSLAM作者:kint_zhao原文:https://blog.csdn.net/zyh821351004/article/details/47381135最近找到一篇论文比较了一下目前ros下2D激光slam的开源代码效果比较:详细参见论文:Anevalu…

    2022年6月29日
    25
  • ToF相机从Camera2 API中获取DEPTH16格式深度图[通俗易懂]

    ToF相机从Camera2 API中获取DEPTH16格式深度图[通俗易懂]ToF相机工作原理:ToF相机给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲往回的飞行时间来得到目标距离。ToF相机可以同时得到整幅图像的深度(距离)信息。  深度图通常是灰度图,其中的每个值代表光反射表面和相机的距离。灰度图水平垂直坐标对应像素点位置,该位置的灰度值对应的是该像素距离摄像头的距离。所以深度图中的每个像素可以表示空间中一个点的三维坐标。如果光源被吸收或者未收到反射信号则呈现黑色。从Camera2API中获取DEPTH16格式的深度信息ImageFormat.DE

    2022年5月10日
    61
  • 0703-APP-Notification-statue-bar

    0703-APP-Notification-statue-bar

    2021年11月23日
    53
  • PS制作CSS精灵图

    PS制作CSS精灵图精灵图简介1.精灵图(雪碧图)(1)问题:精灵图就是将很多的小图标合并到一张较大的图片中,那精灵是啥意思呢?(为此笑了一下午的我)。(2)精灵图也称雪碧图,由于大型网页首次加载需要时间,如果再加之加载小图标的时间,则会严重影响到用户体验。所以,考虑到在同一时间内,服务器拥堵的情况,使用精灵图来解决这一问题。那么怎么制作精灵图呢2.使用ps制作精灵图的详细步骤示例:将如下图图片中的四个图…

    2022年6月7日
    184

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号