如何更改数组中的键?

时间:2013-12-13 09:29:09

标签: php zend-framework frameworks

我在Zend Framework中创建了一个数组,我需要更改一些键。 键现在增加一个整数,我需要以不同的方式递增它们。 我有以下代码:

public function turnoverAction()
    {
        $arrayTurnover = array();
        $selectDebiteur = $this->tableDebiteuren->select("debiteur_id","debiteur_nummer","bedrijf_id")
        ->setIntegrityCheck(false)
        ->where('debiteur_id = 3');
        $debiteur = $this->tableDebiteuren->fetchRow($selectDebiteur);

        $selectverkoopHoofdpost = $this->tableVerkoopHoofdpost->select("*")
        ->setIntegrityCheck(false);
        $verkoopHoofdposten = $this->tableVerkoopHoofdpost->fetchAll($selectverkoopHoofdpost);

        $currentYear = (int)date('Y');
        $amountOfYearsToShow = $currentYear - 5 + 1;
        for($amountOfYearsToShow; $amountOfYearsToShow <= $currentYear; $amountOfYearsToShow++)
        {
            $amountOfYearsToShowBegin = $amountOfYearsToShow.'-01-01';
            $amountOfYearsToShowEnd = $amountOfYearsToShow.'-12-31';
            $arrayYear = array();
            $totaal = 0;
            foreach($verkoopHoofdposten as $verkoopHoofdpost)
            {
                $selectverkoopSubpost = $this->tableVerkoopSubpost->select("*")
                ->setIntegrityCheck(false)
                ->joinLeft('verkoopPost','verkoopPost.verkoopSubpost_id = verkoopSubpost.verkoopSubpost_id')
                ->joinLeft('verkoop_verkoopPost','verkoop_verkoopPost.verkoopPost_id = verkoopPost.verkoopPost_id')
                ->joinLeft('verkopen','verkopen.verkoop_id = verkoop_verkoopPost.verkoop_id')
                ->where('verkopen.debiteur_nummer = ' . $debiteur['debiteur_nummer'])
                ->where('verkopen.verkoop_factuurdatum > ? ', $amountOfYearsToShowBegin)
                ->where('verkopen.verkoop_factuurdatum < ? ', $amountOfYearsToShowEnd)
                ->where('verkoopHoofdpost_id = ' . $verkoopHoofdpost['verkoopHoofdpost_id']);
                $verkoopSubposten = $this->tableVerkoopSubpost->fetchAll($selectverkoopSubpost);

                $totaal_hoofdpost = 0;
                foreach($verkoopSubposten as $verkoopSubpost)
                {
                    $totaal_hoofdpost += $verkoopSubpost['verkoopPost_verkoopsom'];
                }
                $totaal += $totaal_hoofdpost;

                $turnoverValues['post']['totaal_hoofdpost'] = number_format($totaal_hoofdpost, 2, ',', '.');
                $turnoverValues['post']['hoofdpost_omschrijving'] = $verkoopHoofdpost['verkoopHoofdpost_omschrijving'];
                array_push($arrayYear, $turnoverValues);
            }
            $turnoverValue['totaal'] = number_format($totaal, 2, ',', '.');
            array_push($arrayYear, $turnoverValue);
            array_push($arrayTurnover, $arrayYear);
            unset($arrayYear);
        }
        var_dump($arrayTurnover); 
    }

返回以下输出:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    array(1) {
      ["post"]=>
      array(2) {
        ["totaal_hoofdpost"]=>
        string(6) "value"
        ["hoofdpost_omschrijving"]=>
        string(4) "value"
      }
    }
    [1]=>
    array(1) {
      ["post"]=>
      array(2) {
        ["totaal_hoofdpost"]=>
        string(5) "value"
        ["hoofdpost_omschrijving"]=>
        string(8) "value"
      }
    }
  }
 [1]=>
  array(2) {
    [0]=>
    array(1) {
      ["post"]=>
      array(2) {
        ["totaal_hoofdpost"]=>
        string(6) "value"
        ["hoofdpost_omschrijving"]=>
        string(4) "value"
      }
    }
    [1]=>
    array(1) {
      ["post"]=>
      array(2) {
        ["totaal_hoofdpost"]=>
        string(5) "value"
        ["hoofdpost_omschrijving"]=>
        string(8) "value"
      }
    }
  }
}

但我需要以下输出:

array(2) {
  [2009]=>
  array(2) {
    ["post"]=>
    array(1) {
        ["totaal_hoofdpost"]=>
        string(6) "value"
        ["hoofdpost_omschrijving"]=>
        string(4) "value"
    }
    ["post"]=>
    array(1) {
        ["totaal_hoofdpost"]=>
        string(5) "value"
        ["hoofdpost_omschrijving"]=>
        string(8) "value"
    }
  }
 [2010]=>
  array(2) {
    ["post"]=>
    array(1) {
        ["totaal_hoofdpost"]=>
        string(6) "value"
        ["hoofdpost_omschrijving"]=>
        string(4) "value"
    }
    ["post"]=>
    array(1) {
        ["totaal_hoofdpost"]=>
        string(5) "value"
        ["hoofdpost_omschrijving"]=>
        string(8) "value"
    }
  }
}

这有可能吗?

1 个答案:

答案 0 :(得分:1)

最好使用直接数组赋值,而不是使用array_push

在您的情况下,您可能只需要替换array_push($arrayTurnover, $arrayYear);并添加类似

的内容
$arrayTurnover[$amountOfYearsToShow] = $arrayYear;

我希望这会有所帮助。