php - 当多个存在时从数组中删除值只需删除一个
问题描述
我有一个像这样的数组:
[a, b, c, d, e]
在这种情况下,我有一个要从数组中删除的值a
现在数组应该是这样的:
[b, c, d, e]
这很容易,我可以做到:
$del_var = 'a';
if (($key = array_search($del_val, $array)) !== false) {
unset($messages[$key]);
}
但在我有一个包含a
两次或更多搜索值的数组的情况下,我只想将值的计数减少一。像这样:
[a, a, a, b, c, d]
应该给我:
[a, a, b, c, d]
我该怎么办?
解决方案
您可能可以使用以下方法获得一个密钥实例array_keys
:
if (($key = array_search($del_var, $array)) !== false) {
$keys = array_keys($array, $del_var);
// get the first key;
if (!empty($keys)) {
unset($messages[$keys[0]]);
}
}
假设您正在搜索a
,array_keys
应该产生a
inside的所有关键索引$array
。然后只需获取第一个(或取决于您想要多少),您可以使用出现次数取消设置它们。
推荐阅读
- mongodb - Mongo找出连接读取偏好
- google-cloud-platform - 导出到 Cloud Storage 时,Google Cloud Logging 接收器如何工作?导出的格式是什么?
- java - 注销不适用于 Spring Boot、Spring Security 和 Thymleaf
- amazon-dynamodb - 日期范围和用户 ID 的 DynamoDB 主键
- typescript - 如何获取对象数组中给定对象键的所有文字值的并集?
- database - 哪个关系模式捕获了这个系统的语义
- javascript - 通过 Axios 下载多个文件并 .zip 压缩它们
- ruby-on-rails - 用于 has_many 查询的 Jsonapi 序列化程序参数
- proxy - 协助绕过团队和客户端 IP 的 PAC 文件配置
- java - 如何解析SpringBoot中资源文件夹中的JSON