我在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"
}
}
}
这有可能吗?
答案 0 :(得分:1)
最好使用直接数组赋值,而不是使用array_push
。
在您的情况下,您可能只需要替换array_push($arrayTurnover, $arrayYear);
并添加类似
$arrayTurnover[$amountOfYearsToShow] = $arrayYear;
我希望这会有所帮助。