php - 获取数组中键周围的数字
问题描述
假设我有一个如下所示的数组
[0] => 25
[1] => 30
[2] => 35
[3] => 40
[4] => 45
[5] => 50
[6] => 55
[7] => 60
[8] => 65
[9] => 70
如果我将密钥输入为 4 ,我需要获取最近的 2 个数组,例如
[2] => 35
[3] => 40
[4] => 45
[5] => 50
[6] => 55
现在我使用类似下面的东西。
$key = 4;
$count = 2;
$slice = array_slice($array,$key-$count,4+($count-1));
但是如果我的 $key 是 1 并且 count 是 2,我需要类似的东西
[0] => 25
[1] => 30
[2] => 35
[3] => 40
如果 key 是 8 我需要
[6] => 55
[7] => 60
[8] => 65
[9] => 70
我无法实现上面的这个切片代码,所以有人指导一下其他方式,谢谢。
解决方案
下面的代码满足您的测试用例
$array = array(
'0' => 25,
'1' => 30,
'2' => 35,
'3' => 40,
'4' => 45,
'5' => 50,
'6' => 55,
'7' => 60,
'8' => 65,
'9' => 70,
);
$key = 8;
$count = 2;
$slice = array_slice(
$array,
( ( $key - $count ) > 0 ) ? ( $key - $count) : 0 ,
( ( $key - $count ) > 0 ) ? ( (2 * $count) + 1 ) : ( (2 * $count) + ( $key - $count + 1 ) )
);
这是在线演示
推荐阅读
- c# - Asp.Net Core 3.1 Form POST 方法不起作用
- c# - ASP.NET Core Web API 不受支持的媒体类型
- python - 如何获取用于在 python 中的 google fit API 中过滤结果的日期的日期格式?
- html - 导航栏下拉菜单中的文本换行不能通过 css 工作,它可以通过 html 工作
- spring-boot - 使用 H2 的 DataJpaTest 无法访问子选择实体中的数据
- c# - 是否可以为 Quasar Uploader 命名
- java - 简单的java数组字符串算法问题
- powershell - 为什么 PowerShell 5 中的最大变量计数为 4096
- java - 从另一个 Java 进程调用方法
- azure-devops - Scaleway scw init 在 Docker 容器内