Bonjour,
Je souhaite comparer des données et j'ai imaginé le code suivant. Je rencontre cependant une difficulté avec des données binaires, où false est matérialisé par NULL ou une absence de donnée (!isset) et true est représenté par 1. La difficulté est que si j'ai le même nombre de 1, le résultat est vrai (ligne 14) alors qu'il ne s'agit pas des mêmes clés (shower1, toilet1 dans le premier tableau, shower2, toilet2 dans le deuxième). J'utilise implode pour ne pas tenir compte des chaînes vides et des valeurs nulles. L'objectif est de ne pas réenregistrer des données identiques pour ne pas mettre à jour le champ 'ON UPDATE' de ma base de données.Voici un exemple de données considérées à tort comme identiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 var_dump($inData['comment']['score']); // 5 // Sélection des données à sauvegarder $tables = ['hotel', 'comment', 'services']; $isToSave = array_fill_keys($tables, true); foreach (DATA_GROUPS as $group=>$table) { $arrTest1 = $_SESSION['inData'][$group]; $arrTest2 = $outData[$group]; unset($arrTest1['id'], $arrTest1['update_date'], $arrTest2['id'], $arrTest2['update_date']); var_dump($arrTest1); var_dump($arrTest2); var_dump(implode($arrTest1)); var_dump(implode($arrTest2)); if (implode($arrTest1) === implode($arrTest2)) $isToSave[$group] = false; } var_dump($isToSave);C:\wamp64\www\hotels\mainFormHandle.php:9:
array (size=22)
'currency' => string 'EUR' (length=3)
'1bed' => string '49.00' (length=5)
'2beds' => string '82.00' (length=5)
'extra' => null
'free_breakfast' => null
'pay_breakfast' => null
'1bed_shower' => null
'1bed_toilet' => null
'1bed_shower_toilet' => null
'2beds_shower_toilet' => null
'shower1' => string '1' (length=1)
'toilet1' => string '1' (length=1)
'shower2' => null
'toilet2' => null
'special1' => null
'special2' => null
'fair1' => null
'seasonal1' => null
'duration1' => null
'fair2' => null
'seasonal2' => null
'duration2' => null
C:\wamp64\www\hotels\mainFormHandle.php:10:
array (size=9)
'currency' => string 'EUR' (length=3)
'1bed' => string '49.00' (length=5)
'2beds' => string '82.00' (length=5)
'extra' => null
'special1' => null
'special2' => null
'pay_breakfast' => null
'shower2' => string '1' (length=1)
'toilet2' => string '1' (length=1)
C:\wamp64\www\hotels\mainFormHandle.php:169:string 'EUR49.0082.0011' (length=15)
C:\wamp64\www\hotels\mainFormHandle.php:170:string 'EUR49.0082.0011' (length=15)







Répondre avec citation
Partager