minmod + Gestion de l'auto-typage à plusieurs niveaux possibles (Datbase::autotype(@data))

This commit is contained in:
xdrm-brackets 2016-07-19 18:20:42 +02:00
parent 3ed00edb6e
commit acf621bd05
2 changed files with 59 additions and 14 deletions

View File

@ -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<mixed> Tableau de données/Valeur
*
* @return autoTyped<Array> 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;
}
////////////////////////////////////////////////////////////////
// _ __ _ _ _
// __ _____ _ __(_)/ _(_) ___ __ _| |_(_) ___ _ __ ___

View File

@ -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) );
?>