Values โ€‹โ€‹Lost with PHP Multidimensional Array

I am having problems with a multidimensional array in PHP because I lost some values โ€‹โ€‹when I try to add other data to my array.

Here is my source code:

$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']);

Here is the (correct and necessary) conclusion var_dump($retour['07']['1']);: enter image description here


Then I tried to keep the value of "OrderDate" at the level $retour[$num_semaine][$num_journee].

Here is the new code:

$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

Some values โ€‹โ€‹are now missing.


I tried it the other way around:

$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

It seems that the second instruction erased everything that was written first.


Has anyone got an idea on how I can do this right?
Thanks to everyone who read to the end.

+3
source share
1 answer

Using this line ....

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

... ( ). - :

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

... ().

+2

All Articles