Vraag & Antwoord

Webprogrammeren & scripting

[php] Array -> Variabelen

Anoniem
Barus
4 antwoorden
  • Hallo,

    Ik gebruik de volgende functie:

    [code:1:9c8f53123a]function string2array ($string, $template){
    #search defined dividers
    preg_match_all ("|%(.+)%|U", $template, $template_matches);
    #replace dividers with "real dividers"
    $template = preg_replace ("|%(.+)%|U", "(.+)", $template);
    #search matches
    preg_match ("|" . $template . "|", $string, $string_matches);
    #[template_match] => $string_match
    foreach ($template_matches[1] as $key => $value){
    $output[$value] = $string_matches[($key + 1)];
    }
    return $output;
    }
    $data = 'Server1 (Company1) - 192.168.2.11 - Disk size agent C: : Test failed, Access denied ';
    $data2 = '%server% \(%company%\) - %ip% - %agent% : %warning%';

    echo " <br />";
    print_r (string2array ($data, $data2));[/code:1:9c8f53123a]

    Dit levert de volgende array op:

    [code:1:9c8f53123a]
    Array
    (
    [server] => SERVER1
    [company] => Company1
    [ip] => 192.168.2.11
    [agent] => Disk size agent C:
    [warning] => Test failed, Access denied
    )
    [/code:1:9c8f53123a]

    Mijn vraag: Is het mogelijk de inhoud van de array om te zetten in individuele waardes? (voorbeeld: $server = Server1)

    Ben al en tijdje aan het zoeken, maar kom er niet uit.

    Alvast bedankt!

    - barus
  • Waarschijnlijk zal het wel lukken met dynamische variabelen, maar waarom wil je dit eigenlijk? Je kan de array toch ook gewoon op de associatieve index aanspreken; ik zie het nut dus niet zo van deze conversie.

    Uit de losse pols (geen idee of dit werkt):
    [code:1:8dd25ce40c]
    foreach ($array as $key => $val)
    {
    ${$key} = $val;
    }
    [/code:1:8dd25ce40c]
  • [quote:e77243fde2="Annie"]Waarschijnlijk zal het wel lukken met dynamische variabelen, maar waarom wil je dit eigenlijk? Je kan de array toch ook gewoon op de associatieve index aanspreken; ik zie het nut dus niet zo van deze conversie.
    [/quote:e77243fde2]

    Dit is nodig om deze waardes in een database te zetten.

    Hoe kan ik dit doen?

    Barus
  • Een array benader je op index, dus $array[numerieke_index] of $array["associatieve_index"].

    Het wordt dus iets als:
    [code:1:f5f1038ae9]
    $arr = string2array ($data, $data2);

    $sql = "insert into tabelletje (kolom1, kolom2) "
    . "values ('" . $arr["server"] . "', '" . $arr["company"] . "')";
    [/code:1:f5f1038ae9]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.