如何判断字符串中值的类型并将其转换成对应变量类型。
比如有个变量$a = array('12.1','10','string');要将其变成array(12.1,10,'string'); 该怎么做?
我用eval函数做了下,会出现警告,虽然可以用@抑制住,终究不是什么好办法,难道要用正则?我转类型是用来将数据插入到数据库里的。数据库有什么办法做这方面转换不(我数据库知识很烂)?
各位高手支点高招吧。
下面是我用eval函数做的的代码$a = array("12.1","10","sting");
foreach ($a as $t)
{
eval("\$t = $t;");
var_dump($t);
echo '<br/>';
}

解决方案 »

  1.   

    刚试了下,貌似数据库insert 的时候能自动根据导入的值做调整。那问题调整下,怎么能够在php中直接根据字符串中的变量改变变量的类型
      

  2.   

    我也是初学者,根据刚学到的点点知识,试编了个段代码,看是不是你所想要的:
    <?php
    $a=array("12","10.8","string");
    foreach($a as $key=>$value)
    echo $value.':'.gettype($value).'<br />';
    function changetype(&$value)
    {
    if (is_numeric($value)){
    if (strstr($value,'.'))
    settype($value,'double');
    else
    settype($value,'integer');
    }
    }
    array_walk($a,'changetype');
    foreach($a as $key=>$value)
    echo $value.':'.gettype($value).'<br />';
    ?>
    运行结果显示如下:
    12:string
    10.8:string
    string:string
    12:integer
    10.8:double
    string:string
    ——————————
      

  3.   

    /*** 给传入的数据赋予正确的类型  **/
    function format(&$v) {
      if(is_array($v)) {
        $v = array_map('format', $v);
      }
      if(is_numeric($v)) $v += 0;
      return $v;
    }$a = array("12.1","10","sting");
    var_dump($a);
    format($a);
    var_dump($a);执行前
    array(3) {
      [0]=>
      string(4) "12.1"
      [1]=>
      string(2) "10"
      [2]=>
      string(5) "sting"
    }
    执行后
    array(3) {
      [0]=>
      float(12.1)
      [1]=>
      int(10)
      [2]=>
      string(5) "sting"
    }
      

  4.   

    php本身对变量类型就比较弱化,
    变量未定义未初始化就可以使用,就是证明.