2014-11-03 59 views
0

使用为了绘制我的图表,我需要有2个阵列浮标,阵列浮标在PHP

  1. 第一个存储在MySQL数据库(由逗号分隔的)串类型的
  2. 我想将第二个定义为常量数组(在PHP中)

我的问题是如何将数据类型更改为字符串(MySQL)并将其用作PHP中float的数组。 另外,我应该如何定义第二个数组?我应该将其更改为字符串,然后使用反序列化?

这只是打印1

$data = array(); 
$data['cols'] = array(
    array('id' => 'Signal','label' => 'Signal', 'type' => 'string')); 

$rows = array(); 
while($r = mysql_fetch_assoc($result)) { 
    $temp = array(); 
    $temp[] = array('v' => $r['Signal']); 
    $res = array_map("floatval", $temp); 

    var_dump($res);}         

echo var_dump($res); 
+1

你的数据在MySQL中是什么样子的。 – slapyo 2014-11-03 20:11:03

+0

@slapyo,其实这些都是信号。像这样:0.0, 2.0545915E-5, 4.108994E-5, 6.16302E-5, – nazanin 2014-11-03 20:14:54

+0

如果在包含'浮点'数字的'计算'中使用包含'浮点表示'的'字符串',则PHP会先将'string'转换为'浮点'数字,然后进行相应的计算。即'3.14'* 1.0将产生浮点值。 PHP使用“算术上下文”来“知道”字符串值需要转换为“数字”。即您通常不需要显式转换为“数字”类型。 – 2014-11-03 22:36:14

回答

0

您可以使用floatval()array_map()组合到您的字符串数组解析成一个float数组。

一个简单的测试,例如:

$input_array = Array("1.1234", "3.123", "2.23E3", "2.23E-3"); 

$result = array_map("floatval", $input_array); 

var_dump($input_array); 
var_dump($result); 

打印:

array(4) { 
    [0]=> string(6) "1.1234" 
    [1]=> string(5) "3.123" 
    [2]=> string(6) "2.23E3" 
    [3]=> string(7) "2.23E-3" 
} 
array(4) { 
    [0]=> float(1.1234) 
    [1]=> float(3.123) 
    [2]=> float(2230) 
    [3]=> float(0.00223) 
} 

PS:如果你的数据库的结果是一定程度上比浮动值的字符串只是一个平面数组更有条理,您可能需要不仅仅是映射它。提供更多关于你有什么和你期待更详细的帮助的信息。对于你的第二个数组,恐怕你不能将数组标记为常量。 Here是一个相关的问题。您可以参加课程和autosetters,但我不确定这种复杂性是否符合您的要求。

+0

是否可以解释更多关于floatval()和array_map? – nazanin 2014-11-03 20:21:02

+0

@nazanin当然。先看看链接的文档,让我知道什么是混淆。我需要至少看到一个输入数据的例子,并且知道更多关于你希望看到的结果。越详细 - 越好。在此之前,任何更多的细节可能会走错方向而令人困惑。 – 2014-11-03 20:22:37

+0

@nazanin更新了更多的额外研究。看看这是否回答你的问题,让我知道我是否可以提供更多帮助。 – 2014-11-03 20:38:58