0

我有一个问题,将值分配给数组数组以将重复项添加到相同的值中。代码如下:

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 as $key => $rowt )但没有成功,因为“内部”数组似乎在这里没有受到影响。我对 php 完全陌生,所以我想这是一个相当简单的解决方案,但现在它只需要第一个版本访问,而所有其他版本都在循环内部而不是外部。

4

2 回答 2

4

您正在尝试修改由 foreach() 创建的临时数组,这意味着$rowt在每次迭代时都会被丢弃/替换。您可以使用参考或修改后的 foreach 来解决它:

foreach ( $rowsarray as &$rowt ) {
                        ^----
        $rowt[1] += $success;

或者,不那么麻烦:

foreach($rowsarray as $key => $rowt) {
    $rowsarray[$key][1] += $success;
于 2013-02-15T15:34:43.790 回答
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;
于 2013-02-15T15:35:45.557 回答