Veuillez considérer les tableaux suivants:

$reference = array(
    '080604' => 4,
    '080703' => 4,
    '080734' => 2,
    '080819' => 2,
    '088341' => 2,
    '805238' => 20,
    '805283' => 4,
    '805290' => 2,
    '805849' => 2,
    '806051' => 2,
    '806068' => 2,
);

$test = array(
    '080604' => 2,
    '080703' => 4,
    '080819' => 1,
    '088341' => 2,
    '805238' => 20,
    '805283' => 4,
    '805290' => 2,
    '805849' => 2,
    '806051' => 2,
    '806068' => 2,
);

Ils sont assez similaires, mais peuvent présenter diverses différences, par exemple il est possible que: - certaines clés de $ reference ne soient pas du tout présentes dans $ test - certaines clés de $ test ne soient pas du tout présentes dans $ reference - toutes les clés sont présentes, mais les valeurs de $ reference et $ test sont différentes ( parfois $ reference value est plus grande que $ test et parfois la valeur de $ test est plus grande que $ reference)

J'ai besoin de découvrir les différences automatiquement et de les afficher de manière à ce que non seulement la différence de comptage elle-même, mais aussi une description soit fournie, par exemple.

$result = [
   '080604' => [
       'reference' => 4,
       'test' => 2
   ]
];

Si une valeur se trouve dans une seule des listes:

$result = [
   '1234567890' => [
       'reference' => 0,
       'test' => 2
   ]
];

Ou quelque chose comme ça.

Quelqu'un a-t-il une idée, quelle est la meilleure façon d'accomplir cela de manière élégante? Merci beaucoup!

0
QB new media 12 avril 2020 à 00:16

2 réponses

Meilleure réponse

Parcourez chacun d'eux et remplissez le tableau avec des valeurs si présentes:

$combined = [];

foreach ($reference as $key => $val) {
    $combined[$key] = [
        'test' => 0,
        'reference' => $val,
    ];
}

foreach ($test as $key => $val) {
    if (!isset($combined[$key])) {
        $combined[$key] = [
            'reference' => 0,
            'test' => 0,
        ]
    }

    $combined[$key]['test'] = $val;
}

$combined contiendra les deux valeurs des deux tableaux en référence aux deux éléments de $reference et $test.

1
MatsLindh 11 avril 2020 à 21:22

Essayer

$result = array_diff($reference, $test);
print_r($result)
0
Antonio Abrantes 11 avril 2020 à 21:26