¿Cómo obtener el tipo real de un valor dentro de una cadena?

Estaba buscando aquí en StackOverflow sobre la conversión de cadena al valor real y no lo encontré. Necesito una función como “gettype” que hace algo así como el resultado anterior, pero no puedo hacerlo todo: s

gettypefromstring("1.234"); //returns (doble)1,234; gettypefromstring("1234"); //returns (int)1234; gettypefromstring("a"); //returns (char)a; gettypefromstring("true"); //returns (bool)true; gettypefromstring("khtdf"); //returns (string)"khtdf"; 

Gracias a todos 🙂

Debe intentar convertirlo en el orden especificado:

  1. El cheque es doble
  2. Si es doble, puede tratarse de un número entero, debe convertir y comparar estos valores.
  3. Si no, esto es char si la duración es == 1.
  4. Si no, esto es una cadena.
  5. Si es cadena, intente parse para bool.

No puede usar gettype porque puede obtener el tipo de letra de decimal escrito en cadena.

1+ para Svisstack! 😉

Aquí está la función si alguien la quiere:

 function gettype_fromstring($string){ // (c) José Moreira - Microdual (www.microdual.com) return gettype(getcorrectvariable($string)); } function getcorrectvariable($string){ // (c) José Moreira - Microdual (www.microdual.com) // With the help of Svisstack (http://stackoverflow.com/users/283564/svisstack) /* FUNCTION FLOW */ // *1. Remove unused spaces // *2. Check if it is empty, if yes, return blank string // *3. Check if it is numeric // *4. If numeric, this may be a integer or double, must compare this values. // *5. If string, try parse to bool. // *6. If not, this is string. $string=trim($string); if(empty($string)) return ""; if(!preg_match("/[^0-9.]+/",$string)){ if(preg_match("/[.]+/",$string)){ return (double)$string; }else{ return (int)$string; } } if($string=="true") return true; if($string=="false") return false; return (string)$string; } 

Usé esta función para saber si el número X es múltiple de Y.

Ejemplo:

 $number=6; $multipleof=2; if(gettype($number/$multipleof)=="integer") echo "The number ".$number." is multiple of ".$multipleoff."."; 

Pero el marco en el que trabajo devuelve siempre los valores de entrada como cadenas.