Avatar billede claes57 Ekspert
08. juni 2012 - 12:03 Der er 9 kommentarer og
1 løsning

udtræk data fra array

jeg har fået dette oprettet fra xml (nationalbanken)
Array ( [dailyrates] =>    Array (
    [0] => Array (
        [id] => 2012-06-04 [content] => Array (
            [currency] => Array (
                [0] => Array ( [code] => EUR [desc] => Euro [rate] => 743,04 [content] => )
                [1] => Array ( [code] => USD [desc] => Amerikanske dollars [rate] => 597,44 [content] => )
                [2] => Array ( [code] => GBP [desc] => Britiske pund [rate] => 919,09 [content] => )
                [3] => Array ( [code] => SEK [desc] => Svenske kroner [rate] => 82,50 [content] => )
                [4] => Array ( [code] => NOK [desc] => Norske kroner [rate] => 97,73 [content] => )
                [5] => Array ( [code] => ISK [desc] => Islandske kroner [rate] => - [content] => )
                [6] => Array ( [code] => CHF [desc] => Schweiziske franc [rate] => 618,74 [content] => )

og mangler lidt kode - hvordan tilgår jeg data om fx SEK (jeg kan ikke være sikkert på, at den ligger som [3] fremover.
Ønsker en funktion, som jeg fx kalder med 'SEK' som parameter, og den returnerer kursen (82,50)
Avatar billede michael_stim Ekspert
08. juni 2012 - 12:13 #1
Avatar billede claes57 Ekspert
08. juni 2012 - 12:50 #2
jeg er bare en klaphat til php, så det link kan jeg ikke gemmenskue. Mere direkte hjælp, tak.
Avatar billede claes57 Ekspert
08. juni 2012 - 15:06 #3
det lykkedes sørme - det blev jf dit link til en rutine derfra, og så koden


for ($i = 0; $i <= 30; $i++) {
  $land = path_through_array('currency.'.$i.'.code', $arr);
  if ($land == "EUR") {
    $eur = path_through_array('currency.'.$i.'.rate', $arr);
... osv til jeg fik de 6 stk, jeg skal bruge.

kom med et svar, tak...
Avatar billede olebole Juniormester
08. juni 2012 - 17:32 #4
<ole>

En mere generisk løsning kunne være:

<?php
$arr = array(
    'dailyrates' => array(
        'id' => '2012-06-04',
        'content' => array(
            'currency' => array(
                array('code' => 'EUR', 'desc' => 'Euro', 'rate' => '743,04', 'content' => ''),
                array('code' => 'USD', 'desc' => 'Amerikanske dollars', 'rate' => '597,44', 'content' => ''),
                array('code' => 'GBP', 'desc' => 'Britiske pund', 'rate' => '919,09', 'content' => ''),
                array('code' => 'SEK', 'desc' => 'Svenske kroner', 'rate' => '82,50', 'content' => ''),
                array('code' => 'NOK', 'desc' => 'Norske kroner', 'rate' => '97,73', 'content' => ''),
                array('code' => 'ISK', 'desc' => 'Islandske kroner', 'rate' => '-', 'content' => ''),
                array('code' => 'CHF', 'desc' => 'Schweiziske franc', 'rate' => '618,74', 'content' => '')
            )
        )
    )
);

$b = $arr['dailyrates']['content']['currency'];
$c = array();
foreach ($b as $v) {
    $c[$v['code']] = array('desc'=>$v['desc'], 'rate'=>$v['rate'], 'content'=>$v['content']);
}

print_r($c);
?>

/mvh
</bole>
Avatar billede showsource Seniormester
08. juni 2012 - 21:05 #5
Jeg er træt, men hvorfor nu begynde med et NYT array i php ?
http://dk.php.net/manual/en/refs.xml.php
Avatar billede olebole Juniormester
08. juni 2012 - 22:28 #6
#5: Jeg går udfra, der er andre gode grunde til, at XML'en er oversat til alm. array notation. Ellers er jeg helt enig  =)
Avatar billede claes57 Ekspert
09. juni 2012 - 10:10 #7
hvis jeg kan springe lokalt array over, så gerne med mig - selve xml'en ser sådanne ud


<?xml version="1.0" encoding="ISO-8859-1"?>
<exchangerates type="Valutakurser" author="Danmarks Nationalbank" refcur="DKK" refamt="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dailyrates id="2012-06-08">
<currency code="EUR" desc="Euro" rate="743,19" />
<currency code="USD" desc="Amerikanske dollars" rate="596,08" />
<currency code="GBP" desc="Britiske pund" rate="919,85" />
<currency code="SEK" desc="Svenske kroner" rate="82,78" />
<currency code="NOK" desc="Norske kroner" rate="97,79" />
<currency code="ISK" desc="Islandske kroner" rate="-" />
<currency code="CHF" desc="Schweiziske franc" rate="618,71" />

og jeg skal så 'bare' have kursen for SEK lagt i en variabel, så jeg kan vise den.
Avatar billede claes57 Ekspert
11. juni 2012 - 14:37 #8
jeg har reduceret koden lidt til
for ($i = 0; $i <= 30; $i++) {
  $land = path_through_array('currency.'.$i.'.code', $arr);
  if (strstr("EUR_USD_GBP_SEK_CAD_THB",$land)) {
    $rate = path_through_array('currency.'.$i.'.rate', $arr);
...

Nogen svar??? ellers lukker jeg selv.
Avatar billede michael_stim Ekspert
11. juni 2012 - 14:42 #9
Tror bare du kan acceptere dit eget svar. Hverken olebole eller jeg samler på point. Hvis olebole, mod al forventning, skulle have begyndt på at samle point, kan du give dem til ham.
Avatar billede olebole Juniormester
11. juni 2012 - 14:50 #10
Helt korrekt. Jeg samler ikke point - ellers tak  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester