我有一个问题是将值分配给数组数组以将重复项添加到相同的值中。代码如下:
if( isset($rowsarray) && 0 < count($rowsarray) ) {
foreach ( $rowsarray as $rowt ) {
if( $version == $rowt[0] ) {
$rowt[1] += $success;
$rowt[2] += $failure;
$noDuplicate = false;
break;
}
}
}
if( true == $noDuplicate) {
$rowsarray[] = array($version, $success, $failure);
}
因此,如果它是版本的第一个出现我只是添加它,否则我只是增加数组中的成功和失败率。我已经尝试了foreach($ rowsarray作为$ key =&gt; $ rowt)但没有成功,因为“内部”数组似乎没有受到影响。我是php的新手,所以我猜这是一个相当简单的解决方案,但现在它只需要第一个版本访问,而其他所有内容都在循环内部而不是在它之外。
答案 0 :(得分:4)
您正在尝试修改foreach()创建的临时数组,这意味着每次迭代都会删除/替换$rowt
。您可以使用引用或修改的foreach来解决它:
foreach ( $rowsarray as &$rowt ) {
^----
$rowt[1] += $success;
或者,不那么麻烦:
foreach($rowsarray as $key => $rowt) {
$rowsarray[$key][1] += $success;
答案 1 :(得分:1)
您可以使用以下方式简化此检查:
if( isset($rowsarray) && 0 < count($rowsarray) ) {
与
if( ! empty( $rowsarray ) ){
然后,
foreach ( $rowsarray as $key => $rowt ) {
if( $version == $rowt[0] ) {
$rowsarray[$key][1] += $success;
$rowsarray[$key][2] += $failure;