Een array van een array maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roel H

Roel H

23/01/2014 21:14:04
Quote Anchor link
Hallo allemaal,

Ik ben eindelijk klaar met me formulier.
Het werkt fantastisch, en ook mede dankzij jullie hulp.
Echter ik heb nog een wens en ik weet niet of dat haalbaar is.
Ik heb 3 delen. Hoofdgegevens, de zaterdag en de zondag.
Nu wil ik wanneer de gegevens voor zaterdag ingevuld zijn $_SESSION['input']['blabla'] (zijn er ongeveer 15 van) in een aparte array stoppen, die ik later kan uitlezen.
Voor de zaterdag precies hetzelfde, ze worden opgeslagen in $_SESSION['input']['blabla'] (zijn er 20 van ofzo) Zondag precies hetzelfde.
Nu kan ik dus aparte sessions aanmaken ['input'] veranderen in wat anders, maar is er ook een andere manier?

Groet,
Roel
 
PHP hulp

PHP hulp

22/12/2024 10:25:19
 
Ozzie PHP

Ozzie PHP

23/01/2014 23:58:18
Quote Anchor link
Kun je eens proberen (en leren) om je probleem duidelijker te omschrijven? Voor jou is het vast heel duidelijk wat je bedoelt, maar voor mij niet. Dingen als $_SESSION['input']['blabla'] werken verwarrend. Zeg gewoon wat de echte waardes zijn, want zo snap ik niet wat je wil.
 
Roel H

Roel H

24/01/2014 06:24:02
Quote Anchor link
Nou ik probeer het zo duidelijk mogelijk. Maar als ik alle waardes hier neer moet zetten, ben ik wel f bezig. Maar misschien de vraag anders stellen. Ik wil een array uitlezen, tot een bepaalde waarde (tot de 10e bijvoorbeeld)
Ik wil de opbouw zelf bepalen van de array namelijk.
 
Michael -

Michael -

24/01/2014 08:18:53
Quote Anchor link
Roel H op 24/01/2014 06:24:02:
Nou ik probeer het zo duidelijk mogelijk. Maar als ik alle waardes hier neer moet zetten, ben ik wel f bezig. Maar misschien de vraag anders stellen. Ik wil een array uitlezen, tot een bepaalde waarde (tot de 10e bijvoorbeeld)
Ik wil de opbouw zelf bepalen van de array namelijk.

Je kunt een Array op allerlei manier uitlezen. Je kunt het volledig uitlezen met foreach() of maar 1 element uitlezen door de 'key' erachter te zetten. Een array begint standaard met key 0 dus als je het eerste element wilt doe je $array[0]; Dus als je de 10e wil doe je $array[9];
De opbouw van een Array kun je zelf bepalen door zelf de 'key' mee te geven.
Verder is het denk ik handig om wat te code te laten zien want je stelt een vrije brede, en niet heel erg duidelijke, vraag.
 
Ozzie PHP

Ozzie PHP

24/01/2014 12:52:26
Quote Anchor link
>> Nou ik probeer het zo duidelijk mogelijk. Maar als ik alle waardes hier neer moet zetten, ben ik wel f bezig.

Geef dan even een fictief voorbeeld met een paar waardes. Het gaat ook niet om de waardes zelf, maar om hoe de array/arrays? is/zijn opgebouwd. Je omschrijving is niet heel duidelijk. En als je van een array de eerste 10 waardes in een andere array wilt stoppen, waarom stop je die 10 waardes dat niet gelijk in een aparte array? Het klinkt nu alsof je 1 array hebt met daarin verschillende dingen en die dingen wil je er nu weer uit "filteren" door er aparte arrays van te maken. Dat lijkt me niet echt handig, maar goed... je verhaal is niet echt duidelijk dus misschien begrijp ik je wel helemaal verkeerd.
 
Roel H

Roel H

24/01/2014 13:35:46
Quote Anchor link
Oke, ik hoop dat dit een betere uitleg geeft
Ik heb een sessie $_SESSION['input']['waarde']
De waardes zijn o.a.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        'naam' => 'text',
        'geboortedatum' => 'text',
        'woonplaats' => 'text',
        'mail' => 'text',
        'telefoonnummer' => 'text',
        'liddah' => 'text',  
        'naampaard' => 'text',  
        'geslachtpaard' => 'select',  
        'naamvaderpaard' => 'text',  
        'stokmaat' => 'text',  
        'naampaard2' => 'text',
        'geslachtpaard2' => 'select',
        'naamvaderpaard2' => 'text',  
        'stokmaat2' => 'text',  


Nu wil ik zorgen dat het in de mail komt, en dat doe ik zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
        $content[] = '<ul>';
        foreach($_SESSION['input'] as $key => $value)
        {
            if(!empty($value)){
            $content[] = '<li>'.$key.': '.$value.'</li>';
            }
        }
        $content[] = '</ul>';

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
foreach($content as $line)
                {
            $message .= $line;
                }


Nu geeft deze code alle waarde achtereen weer, dat werkt. Ik wil het echter opdelen in secties. Het hoofdgedeelte (bijvoorbeeld de eerste 4 waardes), daarna sectie 1 (waarde 5 tot 9) en sectie 2 (waarde 10 tot 14)
Hoe kan ik die met een array doen?

Hopelijk is de vraag helderder zo en het spijt me voor me belabberde vraagstelling in me OP.

Groet,
Roel
 
Michael -

Michael -

24/01/2014 13:53:49
Quote Anchor link
Waarom doet je het dan in een foreach? Als je zelf de controle erover wilt hebben moet je gewoon de key's gebruiken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$content
[] = '<ul>';
if(isset($_SESSION['input']['waarde']['naam'])){
    $content[] = '<li>Naam: '.$_SESSION['input']['waarde']['naam'].'</li>';
}

if(isset($_SESSION['input']['waarde']['geboortedatum'])){
    $content[] = '<li>Geboortedatum: '.$_SESSION['input']['waarde']['geboortedatum'].'</li>';
}

$content[] = '</ul>';
?>

Dan bepaal je zelf de volgorde en of er eventueel nog een ruimte tussen moet komen etc.

Toevoeging op 24/01/2014 13:58:51:

Wat ook kan is de Array van te voren al op delen in secties, dan kun je het wel met een foreach doen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
array('Persoonsgegevens',
    Array(
    'naam' => 'text',
        'geboortedatum' => 'text',
        'woonplaats' => 'text',
        'mail' => 'text',
        'telefoonnummer' => 'text'
    ),
Array('Paardgegevens',
    Array(
        'liddah' => 'text',  
        'naampaard' => 'text',  
        'geslachtpaard' => 'select',  
        'naamvaderpaard' => 'text',  
        'stokmaat' => 'text',  
        'naampaard2' => 'text',
        'geslachtpaard2' => 'select',
        'naamvaderpaard2' => 'text',  
        'stokmaat2' => 'text'
    )
);

?>

Nog een optie is controleren op een bepaalde waarde
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if($key == 'naam') { content[] = 'Persoonsgegevens:'; }
if($key == 'naampaard') { content[] = 'Paardgegevens:'; }
?>
 
Ozzie PHP

Ozzie PHP

24/01/2014 14:08:28
Quote Anchor link
Michael, dan ben je vergelijkbare code aan het herhalen en dat is ook geen goed idee. (Hiermee reageer ik op jouw eerste code-blokje overigens... ik zag dat je nog iets had toegevoegd, maar het gaat dus om het eerste stukje code.)

Roel, volgens mij klopt je telling niet helemaal en is sectie 1 de eerste 5 waardes en niet de eerste 4?
Probeer dit eens. Even een voorbeeldje, als het werkt moet je zelf maar even de juiste waardes erin zetten...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$titles
= array('naam' => 'adres', 'liddah' => 'Sectie 2', 'naampaard2' => 'Sectie 3');
foreach($_SESSION['input'] as $key => $value)
{
  
    if (isset($titles[$key])) {
        $content[] = '<li><strong>'.$titles[$key].'</strong></li>';
    }

    if(!empty($value)){
        $content[] = '<li>'.$key.': '.$value.'</li>';
    }
}

?>
Gewijzigd op 24/01/2014 14:16:53 door Ozzie PHP
 
Roel H

Roel H

24/01/2014 14:22:23
Quote Anchor link
@Ozzie PHP, het werkt, echterrr...
Niet alle velden zijn verplicht, dus wanneer ik bij sectie 2 een waarde neer zet, kan het zijn dat die niet gepakt wordt, dus dan werkt het al niet meer.
Daarbij is $nettevelden nodig, om de titel netjes weer te geven.

Ik heb gekeken bij array_slice (http://nl1.php.net/array_slice), werkt wel, als ik hem los ergens test. Wil ik heb in dit script plakken, weet ik niet waar.
 
Ozzie PHP

Ozzie PHP

24/01/2014 14:34:07
Quote Anchor link
>> Niet alle velden zijn verplicht, dus wanneer ik bij sectie 2 een waarde neer zet, kan het zijn dat die niet gepakt wordt, dus dan werkt het al niet meer.

"wanneer ik bij sectie 2 een waarde neer zet, kan het zijn dat die niet gepakt wordt"

Waarom zou een waarde die je neerzet niet gepakt worden? Ik snap niet wat je bedoelt.

>> Daarbij is $nettevelden nodig, om de titel netjes weer te geven.

Wat je hiermee wilt zeggen weet ik niet.
 
Roel H

Roel H

24/01/2014 15:04:42
Quote Anchor link
Top! Hhet werkt nu, wat ik straks fout deed bij het script van Ozzie, geen idee.
Super bedankt voor jullie hulp en ik zal eraan werken dat ik mn vraag beter ga formuleren. Maar soms is iets uitleggen zo verdomd moeilijk, zodat de ander het snapt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$titles = array('naam' => 'Basisgegegevns', 'aantalproevendressuuronderzadel' => 'Zaterdag', 'ritaangespannenlunch' => 'Zondag');
foreach($_SESSION['input'] as $key => $value)
{  
    if (isset($titles[$key])) {
        $content[] = '<strong>'.$titles[$key].'</strong>';
    }
    if(!empty($value)){
        $content[] = '<li>'.$nettevelden[$key].': '.$value.'</li>';
    }
}

foreach($content as $key)
echo $key;
Gewijzigd op 24/01/2014 15:08:49 door Roel H
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.