2010-07-21 39 views
1

我有如下所示的数组数据, 如果我的货币是美元,我想将“销售”值存储到数据库中。如何指向右键以从数组中获取某些值?

 
Array ([currency] => USD [sale] => 9120.00 [buy] => 8970.00 ) 
Array ([currency] => SGD [sale] => 6653.75 [buy] => 6520.75 ) 
Array ([currency] => HKD [sale] => 1173.40 [buy] => 1152.10 ) 
Array ([currency] => CHF [sale] => 8685.40 [buy] => 8517.40 ) 
Array ([currency] => GBP [sale] => 13958.80 [buy] => 13675.80 ) 
Array ([currency] => AUD [sale] => 8054.05 [buy] => 7885.05 ) 
Array ([currency] => JPY [sale] => 105.10 [buy] => 102.40 ) 
Array ([currency] => SEK [sale] => 1247.90 [buy] => 1216.80 ) 
Array ([currency] => DKK [sale] => 1590.95 [buy] => 1547.75 ) 
Array ([currency] => CAD [sale] => 8756.35 [buy] => 8568.35 ) 
Array ([currency] => EUR [sale] => 11776.75 [buy] => 11555.75 ) 
Array ([currency] => SAR [sale] => 2441.35 [buy] => 2382.35 ) 
Array ([currency] => NZD [sale] => 6550.75 [buy] => 6389.75 ) 
Array ([currency] => CNY [sale] => 1346.75 [buy] => 1322.35 ) 

谢谢。

这里我的代码:

foreach ($cur_array as $curs) { 
    print_r ($curs)."<br>"; 
    if ($curs['currency'] = "USD") { 
     $curs_sale = $curs['sale']; 
      $curs_name = $curs['currency']; 
      $db->query("UPDATE currency SET rate = '". 
       $curs_sale."' WHERE currency_id ='".$curs_name."'"); 
    } 
} 
+0

你的表列别不符合你的变量。有点混淆那里... – BoltClock 2010-07-21 05:42:54

回答

2

您可以将所有的货币数组只是存储在阵列中,环路通过它,检查哪些货币对应于美元并保存该币种的销售价值:

foreach ($currencies as $curr) 
{ 
    if ($curr['currency'] == 'USD') 
    { 
     // Save $curr['sale'] into your database 

     // Break as further iteration isn't needed 
     break; 
    } 
} 

在futu如果您不知道what community wiki means,请不要将问题标记为社区wiki。

+0

我做了同样的,但我得到错误的价值。 – Chandra 2010-07-21 05:36:18

+0

你的意思是错误的价值是什么? – BoltClock 2010-07-21 05:40:11

+0

关于社区维基,我真的很抱歉。 存储值是$ cur_sale的最后一个值。当我添加break语句时,我可以存储正确的值。但是,如果我想存储货币名称和销售价值。谢谢。 – Chandra 2010-07-21 05:48:57

0

假设所有的项目都在一个数组名为$项:

foreach ($entries as $entry) { 
    if ($entry['currency'] == 'USD') { 
     // do stuff with $entry['sale'] 
    } 
} 
1

BoltClock提出的是正确的。此外,考虑改变你的阵列的结构:

 
Array ([currency] => USD [sale] => 9120.00 [buy] => 8970.00 ) 
Array ([currency] => SGD [sale] => 6653.75 [buy] => 6520.75 ) 
Array ([currency] => HKD [sale] => 1173.40 [buy] => 1152.10 ) 
Array ([currency] => CHF [sale] => 8685.40 [buy] => 8517.40 ) 

到:

 
Array (
    [USD] => Array([sale] => 9120.00 [buy] => 8970.00), 
    [SGD] => Array([sale] => 6653.75 [buy] => 6520.75), 
    [HKD] => Array([sale] => 1173.40 [buy] => 1152.10), 
    [CHF] => Array([sale] => 8685.40 [buy] => 8517.40) 
) 

这种结构将允许您编写更干净的代码,例如:

$usd_sale = $entries['USD']['sale']; 
+0

使用货币名称作为键的+1更具语义。 – BoltClock 2010-07-21 05:45:22

+0

但它可能没有充分映射到数据的关键字 - 这看起来可能是一个订单或产品表,在这种情况下,货币不是该条目的正确关键。你能想象在货币数据库中将货币作为类似实体表的主键吗? – Shabbyrobe 2010-07-21 05:54:15

+0

@Shabbyrobe:table货币(int id,varchar name,float sale,float buy),代码:'while($ line = mysql_fetch_array($ result))$ entries [$ line ['name']] = array('sale '=> $ line ['sale'],'buy'=> $ line ['buy']);' – Anax 2010-07-21 06:15:19