在多维数组中插入新的三个新键

时间:2018-07-05 18:36:32

标签: php

我有一个查询,它将带不同数量的列。 在我的查询下面仅显示了两行,但可能是四行,五行或更多行。 但是对于每个新数组,我需要插入三个不同的键(column_4,column_5和column_6)。

我正在尝试下面的代码,但是它将只对具有相同键的列求和,而这并不是我想要的:

$result = array();

foreach($arr[0] as $k => $v)
$result[$k] = array_sum(array_column($arr, $k));

我有下面的数组:

array(2) {
  [0]=>
  array(9) {
    ["column_1"]=>
    string(15) "Primary"
    ["column_2"]=>
    string(6) "298.50"
    ["column_3"]=>
    string(6) "298.50"
  }
  [1]=>
  array(9) {
    ["column_1"]=>
    string(17) "Secondary"
    ["column_2"]=>
    string(6) "694.50"
    ["column_3"]=>
    string(6) "694.50"
  }
}

我想要这个最终结果:

array(2) {
  [0]=>
  array(9) {
    ["column_1"]=>
    string(15) "Primary"
    ["column_2"]=>
    string(6) "298.50"
    ["column_3"]=>
    string(6) "298.50"
    ["column_4"]=>
    string(6) "298.50"
    ["column_5"]=>
    string(6) "299.50"
    ["column_6"]=>
    string(6) "300.50"
  }
  [1]=>
  array(9) {
    ["column_1"]=>
    string(17) "Secondary"
    ["column_2"]=>
    string(6) "694.50"
    ["column_3"]=>
    string(6) "694.50"
    ["column_4"]=>
    string(6) "694.50"
    ["column_5"]=>
    string(6) "695.50"
    ["column_6"]=>
    string(6) "696.50"
  }
}

列中的信息如下所示:

column_4: Average;
column_5: Average + 1
column_6: Average + 2

2 个答案:

答案 0 :(得分:1)

如果您要在查询中执行此操作,则可以执行此操作

SELECT AVG(my_column_name) as column_4, 
    AVG(my_column_name) + 1 as column_5,
    AVG(my_column_name) +2 as column_6
    FROM tablename

答案 1 :(得分:0)

您需要循环$result并通过添加到该位置的数组成员来对其成员执行计算:

foreach( $result as $k => $v )
{
    $result[ $k ][ 'column_4' ] = ( $v[ 'column_2' ] + $v[ 'column_3' ] ) / 2;
    $result[ $k ][ 'column_5' ] = $result[ $k ][ 'column_4' ] + 1;

    // I will let you figure out column_6 for yourself :)
}