[Résolu] Ajouter une clé à un tableau si absente

Eléphant du PHP | 168 Messages

05 mars 2012, 15:02

Bonjour,

Je chercher à rajouter une clé à mon tableau si elle n'existe pas.
Exemple :
Array
(
    [2012-02-04] => Array
        (
            [messages] => 56
        )

    [2012-02-05] => Array
        (
            [sujets] => 2
            [messages] => 42
        )

    [2012-02-06] => Array
        (
            [sujets] => 3
            [messages] => 32
        )

    [2012-02-07] => Array
        (
            [sujets] => 2
            [messages] => 40
        )

    [2012-02-08] => Array
        (
            [sujets] => 5
            [messages] => 60
        )
...
Deviendrai :
Array
(
    [2012-02-04] => Array
        (
            [sujets] => 0    
            [messages] => 56
        )

    [2012-02-05] => Array
        (
            [sujets] => 2
            [messages] => 42
        )

    [2012-02-06] => Array
        (
            [sujets] => 3
            [messages] => 32
        )

    [2012-02-07] => Array
        (
            [sujets] => 2
            [messages] => 40
        )

    [2012-02-08] => Array
        (
            [sujets] => 5
            [messages] => 60
        )

Possible ?

Merci
Modifié en dernier par Nico le 05 mars 2012, 17:49, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

05 mars 2012, 15:19

$tab = array( 0 => 0, 2 => 2, 3 => 3);
$tab[1] = 1;
var_dump($tab);
;)

Eléphant du PHP | 168 Messages

05 mars 2012, 15:35

Merci pour ta réponse.
J'ai réussi à obtenir mon résultat avec l'exemple ci dessous, mais je ne sais pas si c'est le plus efficace/propre.

Avis ?

Merci
        foreach ($dates AS $key => $values) {
            if (!isset($values['sujets']) OR !isset($values['messages']))
            {
                $newdate[$key]['sujets'] = (isset($values['sujets'])) ? $values['messages'] : 0;
                $newdate[$key]['messages'] = (isset($values['messages'])) ? $values['messages'] : 0;
            }
            else
            {
                $newdate[$key] = $values;
            }
        }

ViPHP
xTG
ViPHP | 7331 Messages

05 mars 2012, 16:22

Plutôt que de dupliquer le tableau utilises le tableau source (sauf si ta duplication a une réelle utilité par la suite).
Ce qui impliquera aussi que le else ne sera pas nécessaire.

Eléphant du PHP | 168 Messages

05 mars 2012, 16:30

Plutôt que de dupliquer le tableau utilises le tableau source (sauf si ta duplication a une réelle utilité par la suite).
Ce qui impliquera aussi que le else ne sera pas nécessaire.
La duplication n'a pas plus d'intêret que ça, c'est car je ne savais pas faire autrement.
Je ne vois pas comment je peux rester sur le tableau original.

ViPHP
xTG
ViPHP | 7331 Messages

05 mars 2012, 16:58

Prenons l'exemple d'incrémenter chaque valeur d'un tableau numérique :
foreach($monTableau as $index => $valeur){
  $monTableau[$index] = $valeur + 1;
}
Cela t'éclaire-t-il ? :)

Eléphant du PHP | 168 Messages

05 mars 2012, 17:48

En effet, c'est d'une évidence :)

Merci ;-)