我有任意数量的数组都具有相同的格式。我想对密钥[15][17][16][22][18][19][20][21]
的值求和,并将其附加到密钥[1]
我目前拥有什么
foreach( $some_array as $mvarray ){
$mvarray[1]= $mvarray[15]+=$mvarray[16];
}
出于测试目的,我只是尝试将键15和键16添加到键1。
数组的示例
[316] => Array
(
[0] => 2017-08-15 00:00:00
[3] => RIF0976834
[9] => 6000
[10] => 2017-08-15 00:00:00
[12] => Some Name Here
[13] => Foo
[4] => Bar
[14] => ML350
[7] => 240
[8] => YENBR
[5] => 2.65
[6] => 1.10
[11] => RMBCY
[15] => 141.21
[17] => 0
[16] => 6.4
[22] => 0
[18] => 0
[19] => 2.2
[20] => 0
[21] => 0
[1] => 169.45
[2] => PRY
)
如您所见,我已经拥有的数组包含key[1]
中的值。我想循环遍历所有数组,并将key[1]
和[15][17][16][22][18][19][20][21]
$mvarray[15]
当我回显key[15]
时,它会回显$test = $mvarray[1]+=$mvarray[15];
的值。
我正在做的foreach循环似乎不起作用。
我做了keys[1]
,似乎将[15]
和v-model="{{ 'filtres.transaccions["'.$atribut->tag.'"]' }}"
加在一起。所以我不知道为什么我的foreach循环不起作用。
任何帮助和指示都将不胜感激。
答案 0 :(得分:1)
foreach
控件结构会创建它迭代的数据的副本,这意味着$mvarray
不是数组的一个条目,它是一个副本。修改它对您的阵列没有影响。
为了使您的代码能够执行您想要执行的操作,您必须从原始数组中访问该条目,您可以通过获取foreach中的键和值来实现:
foreach($some_array as $mkarray => $mvarray) {
$some_array[$mkarray][1] = $some_array[$mkarray][15] += $some_array[$mkarray][16];
}
答案 1 :(得分:1)
您知道要从中提取值的键和总和。
$keys
)。 (我已经生成了一个数组,其中键作为值,然后将它们翻转为键。)array_intersect_key()
和$keys
过滤掉$subarray
中不需要的元素。array_sum()
添加所有值。1
处添加总值。代码:(Demo)
$keys=array_flip([15,17,16,22,18,19,20,21]);
$array=[316=>[0=>'2017-08-15 00:00:00',3=>'RIF0976834',9=>6000,10=>'2017-08-15 00:00:00',
12=>'Some Name Here',13=>'Foo',4=>'Bar',14=>'ML350',7=>240,8=>'YENBR',5=>2.65,
6=>1.10,11=>'RMBCY',15=>141.21,17=>0,16=>6.4,22=>0,18=>0,19=>2.2,20=>0,
21=>0,1=>169.45,2=>'PRY']];
foreach($array as &$a){ // make $a modifiable by reference
$a[1]+=array_sum(array_intersect_key($a,$keys)); // filter, sum, add to [1]
}
var_export($array);
// $array[316][1] increased from 169.45 to 319.26