2014-02-23 100 views
3

我在PHP中遇到了多維數組的麻煩,因爲當我嘗試在數組中添加其他信息時,我失去了一些值。PHP多維數組丟失的值

這是我最初的代碼:

$reponse = $bdd->query("select OrderDate, NomChaine, NomJob, Debut, Fin from ReportJobs where NomJob in ('NPT01000', 'NPT11999') order by OrderDate ASC;"); 
while ($donnees = $reponse->fetch()) 
{ 
    $num_semaine = date('W', strtotime($donnees['OrderDate'])); 
    $num_journee = date('N', strtotime($donnees['OrderDate'])); 

    $retour[$num_semaine][$num_journee][substr($donnees['NomChaine'], 0, -2)][$donnees['NomJob']] = array(
     'Debut' => $donnees['Debut'], 
     'Fin' => $donnees['Fin'] 
    ); 
} 
$reponse->closeCursor(); 
var_dump($retour['07']['1']); 

這裏是(正確的,並希望)的var_dump($retour['07']['1']);的輸出: enter image description here


於是,我試圖存儲「訂購日期值'在$retour[$num_semaine][$num_journee]一級。

這是新代碼:

$reponse = $bdd->query("select OrderDate, NomChaine, NomJob, Debut, Fin from ReportJobs where NomJob in ('NPT01000', 'NPT11999') order by OrderDate ASC;"); 
while ($donnees = $reponse->fetch()) 
{ 
    $num_semaine = date('W', strtotime($donnees['OrderDate'])); 
    $num_journee = date('N', strtotime($donnees['OrderDate'])); 

    $retour[$num_semaine][$num_journee] = array(
     'Date' => $donnees['OrderDate'] 
    ); 
    $retour[$num_semaine][$num_journee][substr($donnees['NomChaine'], 0, -2)][$donnees['NomJob']] = array(
     'Debut' => $donnees['Debut'], 
     'Fin' => $donnees['Fin'] 
    ); 
} 
$reponse->closeCursor(); 
var_dump($retour['07']['1']); 

var_dump($retour['07']['1']);
enter image description here

某些值現在下落不明。


我試了一下週圍的其他方法:

$reponse = $bdd->query("select OrderDate, NomChaine, NomJob, Debut, Fin from ReportJobs where NomJob in ('NPT01000', 'NPT11999') order by OrderDate ASC;"); 
while ($donnees = $reponse->fetch()) 
{ 
    $num_semaine = date('W', strtotime($donnees['OrderDate'])); 
    $num_journee = date('N', strtotime($donnees['OrderDate'])); 

    $retour[$num_semaine][$num_journee][substr($donnees['NomChaine'], 0, -2)][$donnees['NomJob']] = array(
     'Debut' => $donnees['Debut'], 
     'Fin' => $donnees['Fin'] 
    ); 
    $retour[$num_semaine][$num_journee] = array(
     'Date' => $donnees['OrderDate'] 
    ); 
} 
$reponse->closeCursor(); 
var_dump($retour['07']['1']); 

var_dump($retour['07']['1']);
enter image description here

它看起來像第二個指令刪除所有與第一個書面的東西。


任何人都有一個想法,我怎麼能使這個權利?
感謝大家閱讀到最後。

回答

2

這一行....

$retour[$num_semaine][$num_journee] = array(
    'Date' => $donnees['OrderDate'] 
); 

...你重新分配每一次(給定元素)的新陣列。一個顯而易見的想法是把它變成這樣:

$retour[$num_semaine][$num_journee]['Date'] = $donnees['OrderDate']; 

...所以你的代碼將被調整已存在的數組元素(數組本身)。

+0

謝謝!首先,這對我來說並不明顯。 :-D – pihug12