计算数组中的特定变量

时间:2017-06-12 01:56:18

标签: php arrays multidimensional-array

我有两个不同的数组:

$dep = Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 3 )

$q1_a = Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 2 [4] => 4 [5] => 2 )

我把它放在一个数组中:

$arr = array($dep, $q1_a);

然后我得到了:

Array ( 
[0] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 3 ) 
[1] => Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 2 [4] => 4 [5] => 2 ) )

如何在第一个数据中首先匹配特定数字的第二个数组的变量。所以我需要找到第一个数组有1,2和3的数字之和。并获得3个不同的数字。

所以第一个数字将是:

[0] => 1 [1] => 1 [2] => 1
[0] => 4 [1] => 4 [2] => 4 
4+4+4=12

第二

[3] => 2
[3] => 2
2

第三

[4] => 3 [5] => 3
[4] => 4 [5] => 2
4+2=6

我该怎么做?

2 个答案:

答案 0 :(得分:2)

试试这个,live demo

<?php
$dep = [1,1,1,2,3,3];
$q1_a = [4,4,4,2,4,2];

$flag = current($dep);
$result = [0];
foreach($dep as $k => $v){
  if($flag == $v) {
    $val = end($result);
    $result[key($result)]= $val + $q1_a[$k];
  }
  else
    $result[] = $q1_a[$k];
  $flag = $v;
}
print_r($result);

答案 1 :(得分:0)

$cur_index = null;  
$result = [];
$j = 0;
for ( $i = 0; $i < length($dep); $i++) {  
  if ($cur_index == null){ 
    $result[$j] = $q1_a[$i];
    $cur_index = $dep[i];
  }
  else if ($cur_index == $dep[$i]) {
    $result[$j] += $q1_a[$i]
  }
  else {
    $cur_index = $dep[i];
    $result[++$j] += $q1_a[$i];
  }   
} 

希望这项工作和这种语法可能不正确。