Avatar billede googolplex Novice
28. januar 2004 - 22:37 Der er 9 kommentarer og
1 løsning

Multidimensionelt array

Jeg har et multidimensionelt array, der er bygget op på følgende måde:

$array[0]['text']['name']
$array[0]['text']['value']
$array[1]['file']['name']
$array[1]['file']['size']
$array[2]['text']['name']
$array[2]['text']['value']

Nu vil jeg gerne køre en løkke, der:

1. Gennemløber $array
2. Alt efter om det står 'file', 'text' i den næste dimension, skal den kalde en funktion.
3. Denne funktion skal så køre igennem fx $array[1]['file'] og udskrive værdien af eksempelvis $array[2]['text']['value'].

Jeg tror det er bygget forkert op, og har en meget vag idé om hvordan det skal ændres, men kunne godt bruge lidt (nej meget!) hjælp :)
Avatar billede googolplex Novice
28. januar 2004 - 22:38 #1
Hov, 3. skal være:

3. Denne funktion skal så køre igennem fx $array[1]['file'] og udskrive værdien af eksempelvis $array[1]['file']['value'].
Avatar billede taskmgr Nybegynder
28. januar 2004 - 22:54 #2
Nu kender jeg selvfølgelig ikke dit formål, men jeg kunne da forstille mig at det var bedre at gøre følgende:

$array['text'][0]['name']
$array['text'][0]['value']
$array['text'][1]['name']
$array['text'][1]['value']
$array['file'][0]['name']
$array['file'][0]['size']

osv.

Tager jeg fejl?
Avatar billede googolplex Novice
28. januar 2004 - 23:02 #3
Sådan ville jeg også have lavet det, men det duer ikke.

Jeg skal lave et array, jeg kan køre igennem en for-løkke. Så den starter med at kigge på $array[0]. Den skal så tjekke hvad der står efter $array[0], fx ['file'] osv.

Jeg tror jeg laver en fundemental fejl, kan bare ikke se den :(
Avatar billede taskmgr Nybegynder
28. januar 2004 - 23:09 #4
Måske noget lig det her?

$array = array();
$array[0]['text']['name'] = "";
$array[0]['text']['value'] = "";
$array[1]['file']['name'] = "";
$array[1]['file']['size'] = "";
$array[2]['text']['name'] = "";
$array[2]['text']['value'] = "";


foreach($array as $key => $value) {
    foreach($array[$key] as $key2 => $value2) {
        switch($key2){
            case 'text':
                echo "gør noget<br />";
                break;
            case 'file':
                echo "gør noget andet<br />";
                break;
        }
    }
}
Avatar billede googolplex Novice
28. januar 2004 - 23:59 #5
Ja, det er faktisk bygget op omkring en switch i forvejen og jeg havde tænkt på at køre 2 foreach. Sad lige og tænkte på præcis den samme løsning da jeg så The Handler - tjekker det lige og vender tilbage i morgen :)
Avatar billede taskmgr Nybegynder
29. januar 2004 - 00:08 #6
Her har du så en med lidt fopen() osv.

<?
function my_copyfile($fil, $dest){
    if (!$fp  = fopen($fil, "rb")) {
        return;
    }
    $fpo = fopen($dest, "wb");
    while (!feof($fp)){
        $t = fread($fp, 4096);
        fwrite($fpo, $t, 4096);
    }
    fclose($fp);
    fclose($fpo);
}

$id = 1232;
$fil = "http://www.eksperten.dk/img/elogo.png";

$extension = explode(".", basename($fil));
$extension = array_reverse($extension);

$dest = $id . "." . $extension[0];
my_copyfile($fil,$dest);
?>
Avatar billede taskmgr Nybegynder
29. januar 2004 - 00:09 #7
Det var søreme det forkerte vindue den røg i... sorry for det :)
Avatar billede googolplex Novice
29. januar 2004 - 00:12 #8
Så er den der sku :P

foreach ($this->mFields as $key => $value)
        {
            foreach ($value as $key2 => $value2)
            {
                switch($key2)
                {
                    case 'button':
                        $this->BuildButton($key);
                        break;
                    case 'checkbox':
                        $this->BuildCheckbox($key);
                        break;
                    case 'file':
                        $this->BuildFile($key);
                        break;
                    case 'hidden':
                        $this->BuildHidden($key);
                        break;
                    case 'html':
                        $this->mForm .= $this->mFields[$i]['html'];
                        break;
                    case 'password':
                        $this->BuildPassword($key);
                        break;
                    case 'radio':
                        $this->BuildRadio($key);
                        break;
                    case 'reset':
                        $this->BuildReset($key);
                        break;
                    case 'select':
                        $this->BuildSelect($key);
                        break;
                    case 'submit':
                        $this->BuildSubmit($key);
                        break;
                    case 'text':
                        $this->BuildText($key);
                        break;
                    case 'textarea':
                        $this->BuildTextarea($key);
                        break;
                    case 'default':
                        break;
                }
        }
        }

Tester lige lidt mere, du kan ligge et svar i mellemtiden, vender tilbage i morgen :)
Avatar billede taskmgr Nybegynder
29. januar 2004 - 00:19 #9
Det ser jo godt ud :)

Et stk. svar til dig.
Avatar billede googolplex Novice
29. januar 2004 - 00:20 #10
Det funker perfekt nu :P
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