我有一个数组,我想从最后一个索引开始减去数字“ n”,例如:
[1,2,3,4] - 2 = [1,2,3,2]
[1,2,3,4,0,0] - 3 = [1,2,3,1,0,0]
[1,2,3,4,0] - 6 = [1,2,1,0,0]
减数永远不会大于数组值的总和。
目前,我正在使用具有微不足道的循环和减法的固定数组大小的解决方案。对于动态尺寸,我将如何处理呢?哪些PHP方法将使此操作更容易?
我准备了一个小的示例代码,它应该可以工作:
$arr1 = array( 1,2,3,4); //-2
$arr2 = array( 1,2,3,4,0,0); //-3
$arr3 = array( 1,2,3,4,0,); //-6
array_subtract( $arr1, 2 );
array_subtract( $arr2, 3 );
array_subtract( $arr3, 6 );
print_r($arr1);
print_r($arr2);
print_r($arr3);
//heres a handy function which requires the array and the subtraction value as input
function array_subtract( &$array, $sub ) {
$size = sizeof( $array ) - 1;
for( $i = $size; $i >= 0; $i-- ) :
if ($sub > 0 ) :
if ( $array[$i] > $sub ) :
$array[$i] -= $sub;
$sub = 0;
else :
$sub -= $array[$i];
$array[$i] -= $array[$i];
endif;
else :
break;
endif;
endfor;
}
在print_r
输出的样子
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 2
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 1
[4] => 0
[5] => 0
)
Array
(
[0] => 1
[1] => 2
[2] => 1
[3] => 0
[4] => 0
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句