php – 将每个最后一个值与数组中的所有先前值相加

前端之家收集整理的这篇文章主要介绍了php – 将每个最后一个值与数组中的所有先前值相加前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些数组的数组,我需要转换为新数组并将所有值与所有先前的值相加.例如(数组长度,键和值总是不同),这就是我所拥有的:
  1. Array
  2. (
  3. [0] => 1
  4. [1] => 1
  5. [2] => 5
  6. [3] => 1
  7. [4] => 1
  8. [7] => 1
  9. [8] => 3
  10. [9] => 1
  11. )

这就是我需要的:

  1. Array
  2. (
  3. [0] => 1
  4. [1] => 2
  5. [2] => 7
  6. [3] => 8
  7. [4] => 9
  8. [7] => 10
  9. [8] => 13
  10. [9] => 14
  11. )

我尝试了许多不同的方法,但总是坚持某些事情,或者意识到我错了.我有一种感觉,我正在尝试重新发明一个轮子,因为我认为必须有一些简单的功能,但没有找到解决方案的运气.这是我尝试的最后一种方式:

  1. $array = array( "0"=> 1,"1"=> 1,"2"=> 5,"3"=> 1,"4"=> 1,"7"=> 1,"8"=> 3,"9"=> 1 );
  2. $this = current($array);
  3. $next = next($array);
  4. $end = next(end($array));
  5. $sum = 0;
  6. $newArray = array();
  7.  
  8. foreach ($array as $val){
  9. if($val != $end){
  10. $sum = ($this += $next);
  11. array_push($newArray,$sum);
  12. }
  13. }
  14.  
  15. print_r($newArray);

..不幸的是又错了.我花了很多时间找到方法,不知道我需要去哪里,有人可以把我踢向正确的方向吗?

建议你使用array_slice()& array_sum()
  1. $array = array( "0"=>1,"1"=>1,"2"=>5,"3"=>1,"4"=>1,"7"=>1,"8"=>3,"9"=>1);
  2. $keys = array_keys($array);
  3. $array = array_values($array);
  4.  
  5. $newArr = array();
  6.  
  7. foreach ($array as $key=>$val) {
  8. $newArr[] = array_sum(array_slice($array,$key+1));
  9. }
  10. $newArr = array_combine($keys,$newArr);
  11.  
  12. print '<pre>';
  13. print_r($newArr);
  14. print '</pre>';

输出

  1. Array
  2. (
  3. [0] => 1
  4. [1] => 2
  5. [2] => 7
  6. [3] => 8
  7. [4] => 9
  8. [7] => 10
  9. [8] => 13
  10. [9] => 14
  11. )

参考:

> array_slice()
> array_sum()
> array_combine()
> array_keys()

猜你在找的PHP相关文章