2010-07-21 48 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