我有一个像这样的数组 -
Array
(
[16] => 424
[17] => 404
[18] => 416
[21] => 404
[22] => 456
[23] => 879
[28] => 456
[29] => 456
[32] => 123
[35] => 465
)
Run Code Online (Sandbox Code Playgroud)
这个数组的输出是
Array
(
[0] => Array
( ['start'] => 16
['stop'] => 19
)
[1] => Array
( ['start'] => 21
['stop'] => 24
)
[2] => Array
(
['start'] => 28
['stop'] => 30
)
[3] => Array
(
['start'] => 32
['stop'] => 33
)
[4] => Array
(
['start'] => 35
['stop'] => 36
)
)
Run Code Online (Sandbox Code Playgroud)
我真的不需要这些价值观.只需将密钥分组.
'start'值应该是'start'值本身.然而,'stop'值应该是一个连续的整数.
如果特定键不存在连续整数(如[32]和[35]),则'stop'应为整数+ 1(与上述相同).
谢谢大家的帮助.
reset($arr);
$lastKey = key($arr);
$ansIndex = -1;
$ans = array();
foreach ($arr as $k=>$v)
{
if ($k != $lastKey + 1)
{
$ansIndex++;
$ans[$ansIndex]['start'] = $k;
}
$ans[$ansIndex]['stop'] = $k+1;
$lastKey = $k;
}
Run Code Online (Sandbox Code Playgroud)
编辑-改变$ K至$ K + 1的stop指数,以反映你的问题改变
编辑-发现我有两个内的代码行if和else.将它从条件中取出,因为它无论如何运行.
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |