2013-12-13 59 views
0

我在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

也許而不是array_push,你可以使用'array [$ amountOfYearsToShow] = $ arrayYear' – Volvox

回答

1

它更好地使用直接數組賦值而不是使用array_push

在你的情況,你可能只需要更換array_push($arrayTurnover, $arrayYear);,把類似

$arrayTurnover[$amountOfYearsToShow] = $arrayYear; 

我希望這將有助於。