按索引值对php多维数组求和
我有一个这样的数组按索引值对php多维数组求和,php,Php,我有一个这样的数组 $dataListArray = array( array(0,3,0,0,0,0), array(0,0,1,0,0,0), array(0,0,0,1,0,0), array(0,0,0,0,1,0) ); 此数据列表数组可以有n个索引,每个索引数组可以有n个数据。我试图对每个索引的值求和 $sumArray = array(); foreach ($dataListArray as $subArray) { foreach ($subA
$dataListArray = array(
array(0,3,0,0,0,0),
array(0,0,1,0,0,0),
array(0,0,0,1,0,0),
array(0,0,0,0,1,0)
);
此数据列表数组可以有n个索引,每个索引数组可以有n个数据。我试图对每个索引的值求和
$sumArray = array();
foreach ($dataListArray as $subArray) {
foreach ($subArray as $key => $value) {
$sumArray[$key]+= $value;
}
}
// convert sum array as list
$dataList = implode(',', $sumArray);
这是我想要的求和,它的输出是0,3,1,1,0
但它也给了我错误的通知
注意:第6行/opt/lampp/htdocs/chart/1.php中未定义的偏移量:0
注意:未定义的偏移量:第6行/opt/lampp/htdocs/chart/1.php中的1
注意:未定义的偏移量:第6行/opt/lampp/htdocs/chart/1.php中的2
注意:第6行的未定义偏移量:3 in/opt/lampp/htdocs/chart/1.php
注意:未定义的偏移量:第6行的4 in/opt/lampp/htdocs/chart/1.php
注意:第6行未定义的偏移量:5 in/opt/lampp/htdocs/chart/1.php
如何消除此未定义的偏移错误?您必须检查
$key
是否通过使用isset
设置。如果不是,则指定0
由于正在执行$sumArray[$key]+=$value
,因此需要初始化0
,如果未设置$sumArray[$key]
则将$value
添加到未定义的
$dataListArray = array(
array(0,3,0,0,0,0),
array(0,0,1,0,0,0),
array(0,0,0,1,0,0),
array(0,0,0,0,1,0)
);
$sumArray = array();
foreach ($dataListArray as $subArray) {
foreach ($subArray as $key => $value) {
if ( !isset( $sumArray[$key] ) ) $sumArray[$key] = 0; //Check if key exist. Assign 0 if not.
$sumArray[$key]+= $value;
}
}
$dataList = implode(',', $sumArray);
这将导致:
0,3,1,1,1,0
文档:您必须检查
$key
是否通过使用isset
设置。如果不是,则指定0
需要初始化0
,因为您正在执行$sumArray[$key]+=$value
,如果未设置$sumArray[$key]
,则将$value
添加到未定义的
$dataListArray = array(
array(0,3,0,0,0,0),
array(0,0,1,0,0,0),
array(0,0,0,1,0,0),
array(0,0,0,0,1,0)
);
$sumArray = array();
foreach ($dataListArray as $subArray) {
foreach ($subArray as $key => $value) {
if ( !isset( $sumArray[$key] ) ) $sumArray[$key] = 0; //Check if key exist. Assign 0 if not.
$sumArray[$key]+= $value;
}
}
$dataList = implode(',', $sumArray);
这将导致:
0,3,1,1,1,0
Doc:另一种可能的解决方案是在使用之前用零填充
$sumArray
$sumArray = array_fill(0, count($dataListArray[0]), 0);
另一种可能的解决方案是在使用之前用零填充
$sumArray
$sumArray = array_fill(0, count($dataListArray[0]), 0);
您可以使用
array\u sum()
一次添加每一列(使用array\u column()
提取要添加的值),而不是一次循环添加一个项
您可以使用
array\u sum()
一次添加每一列(使用array\u column()
提取要添加的值),而不是一次循环添加一个项
不能向未定义的变量添加内容<代码>$sumArray[$key]必须定义。因此,如何定义$sumArray[$key]。不能向未定义的变量添加内容<代码>$sumArray[$key]必须定义。因此如何定义$sumArray[$key]。在您的回答中值得一提的是,这是因为您使用的是
+=
,需要初始化位置才能正常工作。我还有一个问题@Eddie。若有n个索引,并且对于每个索引,数组中有n个项。这将是正确的总结方法。@JaiSharma我不明白:)在您的回答中值得一提的是,这是因为您使用的是+=
,这需要对位置进行初始化才能正常工作。我还有一个问题@Eddie。若有n个索引,并且对于每个索引,数组中有n个项。这将是正确的求和方法。@JaiSharma我不明白:)您可以使用输入数组的大小来创建它,这样更灵活。好的。我查一下。谢谢,您可以使用输入数组的大小来创建它,以便更灵活。好的。我查一下。谢谢。让我试试。谢谢,好的。让我试试。非常感谢。