数组切片 php,php – 切片数组的一部分并按值x引发数字键

假设您有一个数字键的数组,如

$ar = [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f', 6 => 'g'];

和定义的偏移量为4($offset = 4).现在,您想要从偏移量开始切片该数组的一部分.

$slice = array_slice($ar, $offset, null, true);

而且您不仅要保留原始密钥,而且实际上将它们提高1,因此结果将是:

Array

(

[5] => e

[6] => f

[7] => g

)

代替

Array

(

[4] => e

[5] => f

[6] => g

)

当然,你可以循环遍历数组(foreach,array_walk)并重新分配所有键,例如:

$new_ar = [];

$raise_by = 1; // Could be any other amount

foreach ($slice as $key => $val) {

$new_ar[$key + $raise_by] = $val;

}

但有没有办法在没有额外的外部循环和(重新)分配密钥的情况下做到这一点?像“在x位置切割数组并用x 1开始键”之类的东西?

编辑/可能的解决方案:

静态,短期和基本:

array_unshift($ar, 0);

$result = array_slice($ar, $offset + 1, null, true);

更灵活,但性能可能更差:

$shift = 1;

$slice = array_slice($ar, $offset, null, true);

$ar = array_merge(range(1, $offset + $shift), array_values($slice));

$result = array_slice($ar, $offset + $shift, null, true);

优点是可以将键移动任意值.

最佳答案 你可以这样做.如果你不想使用循环.使用array_combine,空数组范围为5-7

$ar = [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f', 6 => 'g'];

$offset = 4;

$slice = array_slice($ar, $offset, null, true);

$slice = array_combine(range($offset+1, count($slice)+$offset), array_values($slice));//

echo "

";

print_r($slice);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值