From acf621bd053cc157885827ce111c9ef4fb4b6ed0 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 19 Jul 2016 18:20:42 +0200 Subject: [PATCH] =?UTF-8?q?minmod=20+=20Gestion=20de=20l'auto-typage=20?= =?UTF-8?q?=C3=A0=20plusieurs=20niveaux=20possibles=20(Datbase::autotype(@?= =?UTF-8?q?data))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/Database.php | 55 ++++++++++++++++++++++++++++++++++++++------ test/automate.php | 18 +++++++++------ 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/manager/Database.php b/manager/Database.php index 5e838cb..605c2fb 100755 --- a/manager/Database.php +++ b/manager/Database.php @@ -125,16 +125,16 @@ if( !\mb_detect_encoding($val, 'UTF-8') ) $fetchData[$i][$col] = utf8_encode($val); - if( is_int($col) ){ // Si indice numerique - if( $nextEquivalent ) // Si suit un indice textuel - unset( $fetchData[$i][$col] ); // on supprime l'indice + if( is_int($col) ){ // Si indice numerique + if( $nextEquivalent ) // Si suit un indice textuel + unset( $fetchData[$i][$col] ); // on supprime l'indice - $nextEquivalent = false; // Dans tous les cas, on dit que le prochain ne pourra pas etre supprime si numerique + $nextEquivalent = false; // Dans tous les cas, on dit que le prochain ne pourra pas etre supprime si numerique - }else // Si l'indice n'est pas un entier - $nextEquivalent = true; // On signale qu'il y aura peut etre un indice numerique suivant + }else // Si l'indice n'est pas un entier + $nextEquivalent = true; // On signale qu'il y aura peut etre un indice numerique suivant - } + } /* [2] 1 dimensions ===============================================*/ @@ -164,6 +164,47 @@ + + /* GESTION DE L'AUTO-TYPAGE D'UN TABLEAU A UN/PLUSIEURS NIVEAU(X) OU D'UNE VALEUR + * + * @data Tableau de données/Valeur + * + * @return autoTyped Tableau/Valeur auto-typé(e) + * + */ + public static function autotype($data){ + $autotyped = $data; + + /* [0] Gestion des types simples + =========================================================*/ + if( !is_array($autotyped) ){ + + /* (1) Si Numérique Entier -> INT */ + if( is_numeric($autotyped) && intval($autotyped) == $autotyped ) + return intval($autotyped); + + /* (2) Si Numérique Décimal -> FLOAT */ + else if( is_numeric($autotyped) && floatval($autotyped) == $autotyped ) + return floatval($autotyped); + + /* (3) Sinon on retourne la même chose */ + else + return $autotyped; + + /* [1] Gestion des types composés + =========================================================*/ + }else{ + + // Pour chaque valeur, on applique récursivement + foreach($autotyped as $k=>$v) + $autotyped[$k] = self::autotype($v); + + } + + return $autotyped; + } + + //////////////////////////////////////////////////////////////// // _ __ _ _ _ // __ _____ _ __(_)/ _(_) ___ __ _| |_(_) ___ _ __ ___ diff --git a/test/automate.php b/test/automate.php index 91cd9fa..7b5633b 100755 --- a/test/automate.php +++ b/test/automate.php @@ -337,14 +337,18 @@ debug(); - $req = new Repo('machine_cluster/link', [ - 7, - 2, - 3 - ]); + $int = '1'; + $flo1 = '1.2'; + $flo2 = '1,2'; + $str = '1,s2'; + $arr = [$int, $flo1, $flo2, $str]; - var_dump( $req->error ); - var_dump( $req->answer() ); + + var_dump( Database::autotype($int) ); + var_dump( Database::autotype($flo1) ); + var_dump( Database::autotype($flo2) ); + var_dump( Database::autotype($str) ); + var_dump( Database::autotype($arr) ); ?>