我想添加多维键和值数组。我有 1 个多维数组,如下所示:
<?php
$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'];
}
?>
当我在浏览器中运行它时,出现警告消息 Uncaught TypeError: Illegal offset type in line $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],
];
希望你能帮助我,谢谢
需要在
$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 这里是小提琴示例。
可以通过使用数组解构来通过引用声明每行中的新
average
元素,从而在语法上缩短脚本。
当然,您选择的关联键是有问题的——这不是计算平均值的方式。
代码:(演示)
foreach ($data as ['value1' => $v1, 'value2' => $v2, 'average' => &$avg]) {
$avg = $v1 * 0.5 + $v2 * 0.6;
}
var_export($data);
输出:
array (
0 =>
array (
'name' => 'albert',
'id' => 2101001,
'value1' => 87,
'value2' => 63,
'average' => 81.3,
),
1 =>
array (
'name' => 'andrew',
'id' => 2101002,
'value1' => 76,
'value2' => 79,
'average' => 85.4,
),
)