加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在数组中推进索引键

发布时间:2020-12-13 17:48:50 所属栏目:PHP教程 来源:网络整理
导读:我有一个数字递增键的数组从0开始,如0 1 2 3 4 5 ….等.我需要以下列方式为数组分配新密钥 前三个键保留其索引号 每4个键增加4 第四个之后的两个键增加1 我知道我需要使用foreach循环(似乎是最简单的方法)来构建具有新分配键的新数组.我的问题是计算密钥 这
我有一个数字递增键的数组从0开始,如0 1 2 3 4 5 ….等.我需要以下列方式为数组分配新密钥

>前三个键保留其索引号
>每4个键增加4
>第四个之后的两个键增加1

我知道我需要使用foreach循环(似乎是最简单的方法)来构建具有新分配键的新数组.我的问题是计算密钥

这是我所看到的关系

这是我当前的数组键

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

这就是我需要它们

0 1 2 6 7 8 12 13 14 18 19 20 24 25 26 30

让我们将其分解为3个关键组,顶部是旧的数组键,底部是新的数组键

第一组

0 1 2

0 1 2

第二组

3 4 5

6 7 8

第3组

6 7 8

12 13 14

第四组

9 10 11

18 19 20

等等……

当您查看两个数组键之间的关系时,您将看到以下内容:

>旧数组键0,1和2保持其键值
>旧的数组键3,6,9等,如果乘以2,则为您提供新的数组键值
>旧的数组键4,7,10等,如果乘以2并从该总数中减去1,则获得该特定键的新数组键
>旧数组键5,8,11等,如果乘以2并从总数中减去2,则得到该特定键的新数组键

或者,如果从新密钥中减去旧密钥,则会得到以下答案

第一组> 0
第二组> 3
第3组> 6
第4组> 9
>等等……

可能的解决方案

我能想到的唯一解决方案是使用模数运算符(在我的foreach循环内),根据模数结果检查当前键,然后计算我的新键

例:

if ( $key%3 == 0 && $key != 0 ) {
    $new_key = $key * 2;
} elseif ( ( $key - 1 ) %3 == 0 && $key != 1 ) {
    $new_key = ( $key * 2 ) - 1;
} elseif ( ( $key - 2 ) %3 == 0 && $key != 2 ) {
    $new_key = ( $key * 2 ) - 2;
} else {
    $new_key = $key;
}

$new_array[$new_key] = $value;

我的问题

难道没有更聪明的数学方法吗?

解决方法

请尝试以下方法:

$new_key = floor($old_key / 3) * 3 + $old_key

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读