minmod + Gestion de l'auto-typage à plusieurs niveaux possibles (Datbase::autotype(@data))
This commit is contained in:
parent
3ed00edb6e
commit
acf621bd05
|
@ -125,16 +125,16 @@
|
||||||
if( !\mb_detect_encoding($val, 'UTF-8') )
|
if( !\mb_detect_encoding($val, 'UTF-8') )
|
||||||
$fetchData[$i][$col] = utf8_encode($val);
|
$fetchData[$i][$col] = utf8_encode($val);
|
||||||
|
|
||||||
if( is_int($col) ){ // Si indice numerique
|
if( is_int($col) ){ // Si indice numerique
|
||||||
if( $nextEquivalent ) // Si suit un indice textuel
|
if( $nextEquivalent ) // Si suit un indice textuel
|
||||||
unset( $fetchData[$i][$col] ); // on supprime l'indice
|
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
|
}else // Si l'indice n'est pas un entier
|
||||||
$nextEquivalent = true; // On signale qu'il y aura peut etre un indice numerique suivant
|
$nextEquivalent = true; // On signale qu'il y aura peut etre un indice numerique suivant
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [2] 1 dimensions
|
/* [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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
// _ __ _ _ _
|
// _ __ _ _ _
|
||||||
// __ _____ _ __(_)/ _(_) ___ __ _| |_(_) ___ _ __ ___
|
// __ _____ _ __(_)/ _(_) ___ __ _| |_(_) ___ _ __ ___
|
||||||
|
|
|
@ -337,14 +337,18 @@
|
||||||
|
|
||||||
|
|
||||||
debug();
|
debug();
|
||||||
$req = new Repo('machine_cluster/link', [
|
$int = '1';
|
||||||
7,
|
$flo1 = '1.2';
|
||||||
2,
|
$flo2 = '1,2';
|
||||||
3
|
$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) );
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue