php - 从php中的数组中删除每个第3个和第4个元素
问题描述
我有以下数组,我想跳过数组中的前 3 个元素(键 - 0、1、2)并删除下一个 2 元素(键 - 3、4)。即 - 我想要这样的数组,它会跳过每个第一个 3 个元素并在前 3 个元素之后删除下一个 2 个元素。我尝试了下面的代码,但这不是正确的解决方案。
for($i = 0; $i < count($newArray); $i += 1) {
if($i == 3 || $i == 4 || $i == 8 || $i == 9){
unset($newArray[$i]);
}
}
输入数组
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0
[4] => 0
[5] => 0.349
[6] => 0.686
[7] => 0.168
[8] => 0
[9] => 0
[10] => 0.272
[11] => 0.534
[12] => 0.131
[13] => 1
[14] => 0
)
**Expected Output**
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0.349
[4] => 0.686
[5] => 0.168
[6] => 0.272
[7] => 0.534
[8] => 0.131
)
解决方案
您可以使用array_filter
, 使用ARRAY_FILTER_USE_KEY
标志将元素键传递给过滤器函数,并删除所有key % 5
不是的条目< 3
:
$newArray = array_filter($newArray, function ($k) { return $k % 5 < 3; }, ARRAY_FILTER_USE_KEY );
print_r($newArray);
输出:
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[5] => 0.349
[6] => 0.686
[7] => 0.168
[10] => 0.272
[11] => 0.534
[12] => 0.131
)
请注意,如果您希望数组值以 0 为索引,则可以通过以下方式传递结果array_values
:
$newArray = array_values($newArray);
print_r($newArray);
输出:
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0.349
[4] => 0.686
[5] => 0.168
[6] => 0.272
[7] => 0.534
[8] => 0.131
)
推荐阅读
- ansible - 是否可以引用作为“项目”传递的变量并在循环通过 jinja 模板时使用它们的元素?
- wifi - 构建 AOSP 时提供预先保存的 wifi SSID 和密码
- python - 我正在尝试创建一个烧瓶应用程序,该应用程序可以从 heroku 上的 Internet 下载文件。但我不知道文件存储在哪里
- ios - iOS swift Codable 不能与 Alamofire 一起使用 JSON 嵌套数据?
- android - 摇篮 | publishToMavenLocal | 如何排除发布相关任务
- python - Scrapy,未调用客户方法
- python - 使用带有 sqlalchemy 的循环连接多个表
- graph - 在一张图中绘制不同回归的边际效应
- python - 在任何键盘输入某个按键之前,如何禁用所有键盘和鼠标(除了一个)?
- linux - 有没有办法在 Jenkins 中针对 RDS (Oracle) 运行 SQL 查询而不使用 SQL Plus Script Runner Plugin