向二维数组的每一行添加新的关联元素

问题描述 投票:0回答:2

我想添加多维键和值数组。我有 1 个多维数组,如下所示:

$data = [
    ["name" => "albert","id"=>2101001,"value1"=>87 ,"value2"=>63,],
    ["name" => "andrew","id"=>2101002,"value1"=>76 ,"value2"=>79,],
];

foreach ($data as $value) {
    $a = $value['value1'];
    $b = $value['value2'];
    $data[$value]['average'] = ($a * 0.5) + ($b * 0.6) ;
    echo $value['average'];
}

当我在浏览器中运行它时,出现警告消息:

未捕获类型错误:行 $data[$value]['average'] = ($a * 0.5) + ($b * 0.6); 中的偏移类型非法

我想要的结果是这样的:

$dataresult = [ ["name" => "albert", "id" => 2101001, "value1" => 87 , "value2" => 63, "average" => 81.3], ["name" => "andrew", "id" => 2101002, "value1" => 76 , "value2" => 79, "average" => 85.4], ];
    
php arrays multidimensional-array associative-array
2个回答
2
投票
需要在

$key

 循环中获取 
foreach
 引用以帮助索引到 
data
:

$data = [ ["name" => "albert","id"=>2101001,"value1"=>87 ,"value2"=>63,], ["name" => "andrew","id"=>2101002,"value1"=>76 ,"value2"=>79,], ]; foreach ($data as $key => $value) { $a = $value['value1']; $b = $value['value2']; $data[$key]['average'] = ($a * 0.5) + ($b * 0.6) ; echo $value['average']; } var_dump($data);
输出:

array(2) { [0]=> array(5) { ["name"]=> string(6) "albert" ["id"]=> int(2101001) ["value1"]=> int(87) ["value2"]=> int(63) ["average"]=> float(81.3) } [1]=> array(5) { ["name"]=> string(6) "andrew" ["id"]=> int(2101002) ["value1"]=> int(76) ["value2"]=> int(79) ["average"]=> float(85.4) } }
PHP 

这里是小提琴示例


0
投票
可以通过使用数组解构来通过引用声明每行中的新

average

 元素,从而在语法上缩短脚本。

当然,您选择的关联键是有问题的——这不是计算平均值的方式。

代码:(

演示

foreach ($data as ['value1' => $v1, 'value2' => $v2, 'average' => &$avg]) { $avg = $v1 * 0.5 + $v2 * 0.6; } var_export($data);
    
© www.soinside.com 2019 - 2024. All rights reserved.