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 に答える