2010-07-21 5 views
1

J'ai les données de tableau comme indiqué ci-dessous, Je veux stocker la valeur 'vente' dans la base de données si ma devise est USD.Comment pointer sur la bonne touche pour obtenir une valeur de tableau?

 
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 ) 

Merci.

Voici mon code:

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

vos colonnes de table don Ne correspond pas à vos variables. Un peu déroutant ... – BoltClock

Répondre

2

Vous pouvez simplement stocker tous les tableaux de monnaie dans un tableau, boucle à travers elle, vérifier laquelle des devises correspond à l'USD et enregistrer la valeur de vente de cette devise:

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

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

In futu re, s'il vous plaît ne pas marquer des questions comme wiki de la communauté si vous ne connaissez pas what community wiki means.

+0

J'ai fait la même chose mais je me trompe de valeur. – Chandra

+0

Que voulez-vous dire par une mauvaise valeur? – BoltClock

+0

Je suis vraiment désolé pour le Wiki communautaire. La valeur stockée est la dernière valeur de $ cur_sale. Quand j'ajoute une déclaration de rupture, je peux stocker la bonne valeur. Mais comment puis-je stocker à la fois la devise et la valeur de vente? Merci. – Chandra

0

Si l'on suppose toutes les entrées sont dans un tableau appelé entrées $:

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

Ce que BoltClock a proposé est correct. En outre, envisager de modifier la structure de votre tableau à partir:

 
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) 
) 

Cette structure vous permettra d'écrire un code plus propre, par exemple:

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

+1 en utilisant les noms de devises comme clés est plus sémantique. – BoltClock

+0

Toutefois, il se peut qu'il ne soit pas correctement mappé à une clé pour les données: il semble qu'il s'agisse d'une table de commandes ou de produits, auquel cas la devise n'est pas la bonne clé pour l'entrée. Pouvez-vous imaginer faire de la devise la clé primaire d'un tableau similaire d'entités comme celle-ci dans une base de données? – Shabbyrobe

+0

@Shabbyrobe: tableau Devises (int id, nom varchar, vente float, float buy), code: 'while ($ ligne = mysql_fetch_array ($ result)) $ entrées [$ line ['name']] = array ('vente '=> $ line [' vente '],' buy '=> $ line [' acheter ']) ' – Anax

Questions connexes