Addition de 2 tableaux selon la clé

Résolu
fouraux -  
 fouraux -
Bonjour,

voilà j'ai 2 tableau assez simple.
les voici :
Array
(
    [5] => 295.62
    [6] => 18135.7
    [11] => 8915.79
    [12] => 87600.33
    [22] => 456
    [42] => 12062.19
    [43] => 180
    [73] => 800.1
    [103] => 800.1
    [134] => 1600.2
)


et
Array
(
    [2] => 62465.75
    [9] => 9718.52
    [10] => 987.92
    [12] => 15328.94
    [17] => 9360.47
    [24] => 367.58
    [27] => 1426.04
    [42] => 6677.87
    [43] => 420.18
)


j'aimerai addition la valeur si la clé est la même, et surtout garder l'ordre des clés en gros j'aimerai obtenir ca :
Array
(
[2] => 62465.75
[5] => 295.62
[6] => 18135.7
[9] => 9718.52
[10] => 987.92
[11] => 8915.79
[12] => 87600.33+15328.94 (juste le résultat)
[17] => 9360.47
[22] => 456
[24] => 367.58
[27] => 1426.04
[42] => 6677.87+12062.19
[43] => 420.18+180
[73] => 800.1
[103] => 800.1
[134] => 1600.2
)

J'ai regarder du coté de array_merge, mais il me refait toute les clés, et je dois les garder.

Merci d'avance pour votre aide !

3 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Avec un foreach, tu peux lister toutes les paires clé/valeur , ensuite avec un isset, tu vérifie si c'est présent dans l'autre tableau.
    Pour l'ordre, je te laisse chercher encore un peu, car je n'ai pas d'idée précise.
    0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Essayes ça :
    <?php
    $R1 = Array(
        "5" => 295.62
        ,"6" => 18135.7
        ,"11" => 8915.79
        ,"12" => 87600.33
        ,"22" => 456
        ,"42" => 12062.19
        ,"43" => 180
        ,"73" => 800.1
        ,"103" => 800.1
        ,"134" => 1600.2
    );
    
    $R2 = Array
    (
        "2" => 62465.75
        ,"9" => 9718.52
        ,"10" => 987.92
        ,"12" => 15328.94
        ,"17" => 9360.47
        ,"24" => 367.58
        ,"27" => 1426.04
        ,"42" => 6677.87
        ,"43" => 420.18
    );
    
    $sums = array();
    foreach (array_keys($R1 + $R2) as $key) {
        $sums[$key] = @($R1[$key] + $R2[$key]);
    }
    
    ksort($sums);
    
    echo "<pre>";
    print_r($R1);
    print_r($R2);
    print_r($sums);
    echo "</pre>";
    ?>
    


    Ce qui donne :


    Cordialement,
    Jordane
    0
  3. fouraux
     
    Super Jordane , c'est exactement ce que je souhaitais obtenir, un grand merci !
    0