c++ 删除数组元素_「问答聘聘」PHP架构师都想不全的数组元素删除方法你知道几个?...

96128880bdec6b0e44224f2315724bd2.png

今日精选岗位:PHP工程师,1个超精选回答获得BOSS内推,HR已邀面试。

如果是你,能回答出来吗?

岗位描述

PHP工程师

职位描述:

1、负责后端系统开发;

2、研究新兴技术,持续优化系统架构;

3、负责所属模块详细设计文档撰写、编码、单元测试等工作;

4、严格遵守团队的代码规范、结构的规定,编写易读、易维护、高质量、高效率的代码。

任职要求:

1、精通PHP开发语言,熟悉Apache、Nginx、Mysql、ThinkPHP 、Laravel 的原理;

2、熟悉多种缓存实现机制与策略、熟悉Memcache、Redis开发;

3、有nosql数据库经验的优先;

4、有运维经验优先;

5、有良好的团队合作能力,善于沟通热爱编程;

6、有微信小程序以及公众号平台开发经验者优先;

7、有大型项目开发经验,具有不错的学习能力者优先。

岗位提问

如何从一个php数组中删除一个元素?

有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach($ array)不再包含该元素?

精选回答

有多种删除数组元素的方法,其中某些方法对某些特定任务比其他方法更有用。

删除单个数组元素

如果只是想删除一个数组元素,那么可以用unset()或者array_splice()

如果只知道value而不知道key,那么可以使用array_search()去获取key值。

unset()

当使用unset()时,数组键不会更改/重新索引。如果要重新索引键,可以在unset()之后使用 array_values(),它将所有键转换为从0开始的数字枚举键。

Code:

$array = [0 => "a", 1 => "b", 2 => "c"];

unset($array[1]); //key对应的元素将会被删除

?>

Output:

[

[0] => a

[2] => c

]

array_splice()

如果使用array_splice(),则键将自动重新索引,但是关联键不会更改,而array_values()会将所有键转换为数字键。

这里需要注意的是,array_splice()的第二个、第三个参数分别是偏移量和长度,这里不需要传入键值。

Code:

$array = [0 => "a", 1 => "b", 2 => "c"];

array_splice($array, 1, 1); //偏移量是1,长度是1

?>

Output:

[

[0] => a

[1] => c

]

array_splice()与unset()相同,它通过引用来获取数组!

删除多个数组元素

如果要删除多个数组元素并且不想多次调用unset()或array_splice(),则可以根据是否知道其中的值或键来使用函数array_diff()或array_diff_key()。

array_diff()

如果知道要删除的数组元素的值,则可以使用array_diff()。与以前一样,使用unset()不会更改/重新索引数组的键。

Code:

$array = [0 => "a", 1 => "b", 2 => "c"];

$array = array_diff($array, ["a", "c"]); // 你想要删除的数组元素

?>

Output:

[

[1] => b

]

array_diff_key()

如果知道要删除元素的键值,那么可以使用array_diff_key()。在这里,必须确保将键作为第二个参数中的键而不是值来传递。否则,必须使用array_flip()翻转数组。而且这里的键不会更改/重新索引。

Code:

$array = [0 => "a", 1 => "b", 2 => "c"];

$array = array_diff_key($array, [0 => "xy", "2" => "xy"]); // 你想删除元素的键

?>

Output:

[

[1] => b

]

同样,如果要使用unset()或array_splice()删除具有相同值的多个元素,则可以使用array_keys()获取特定值的所有键,然后删除所有元素。

看完精选答案是不是跃跃欲试呢?快快快扫码进群,用实力赢offer!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值