为双数组赋值



我在将值分配给数组以将重复值添加到相同值中时遇到问题。代码如下:

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

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

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

或者,不那么麻烦:

foreach($rowsarray as $key => $rowt) {
    $rowsarray[$key][1] += $success;

您可以使用简化此检查

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;

相关内容

  • 没有找到相关文章

最新更新