如何判断字符串中值的类型并将其转换成对应变量类型 例'12.1','10', 'string'->12.1,10,'string'

daguaio_O 2009-05-19 11:15:02
加精
如何判断字符串中值的类型并将其转换成对应变量类型。
比如有个变量$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/>';
}


...全文
1326 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
言会咸 2010-01-24
  • 打赏
  • 举报
回复
学习了
jingwul 2010-01-19
  • 打赏
  • 举报
回复
学习了,array_map函数
phpboy 2009-06-23
  • 打赏
  • 举报
回复
学习了
lhsxsh 2009-05-22
  • 打赏
  • 举报
回复
学习了
zhuweiping2003 2009-05-21
  • 打赏
  • 举报
回复
学习
ndcs_dhf2008 2009-05-20
  • 打赏
  • 举报
回复
顶一个,关注中.
yctin 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuzuning 的回复:]
/*** 给传入的数据赋予正确的类型 **/
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]=…
[/Quote]

这个~很好...很强大...
程序猿之殇 2009-05-20
  • 打赏
  • 举报
回复
php本身对变量类型就比较弱化,
变量未定义未初始化就可以使用,就是证明.
xuzuning 2009-05-20
  • 打赏
  • 举报
回复
/*** 给传入的数据赋予正确的类型 **/
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"
}
v轻扬v 2009-05-20
  • 打赏
  • 举报
回复
我也是初学者,根据刚学到的点点知识,试编了个段代码,看是不是你所想要的:
<?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
——————————
hardapollo 2009-05-20
  • 打赏
  • 举报
回复
QQ群:17457848

php技术讨论,
jichangh1983 2009-05-20
  • 打赏
  • 举报
回复
学习了
daguaio_O 2009-05-20
  • 打赏
  • 举报
回复
多谢了,又学到不少东西,一会结贴去。
qgylovelj 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuzuning 的回复:]
/*** 给传入的数据赋予正确的类型 **/
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(…
[/Quote]

up
zm_hs 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuzuning 的回复:]
/*** 给传入的数据赋予正确的类型 **/
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(…
[/Quote]
牛..
dehexiao 2009-05-20
  • 打赏
  • 举报
回复
学习中,非常关注。顶!
Sou2012 2009-05-20
  • 打赏
  • 举报
回复
MARK!!!
daguaio_O 2009-05-19
  • 打赏
  • 举报
回复
刚试了下,貌似数据库insert 的时候能自动根据导入的值做调整。

那问题调整下,怎么能够在php中直接根据字符串中的变量改变变量的类型
tubaojian 2009-05-19
  • 打赏
  • 举报
回复
学习中,非常关注。顶!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧