Hulp met Array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

28/08/2011 19:53:48
Quote Anchor link
Ik zit helaas een beetje vast. Ik heb de volgende code. Dit is één variable. Maar, hoe kan ik hier twee van maken? Het moet automatisch, dus geen explode. Ik moet deze namelijk later weer gebruiken in een foreach...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Array
(
    [0] => a
    [1] => b
)
Array
(
    [2] => c
    [3] => d
)
Gewijzigd op 29/08/2011 15:42:07 door
 
PHP hulp

PHP hulp

08/03/2021 03:25:30
 
Kees Schepers

kees Schepers

28/08/2011 20:08:29
Quote Anchor link
Je wilt een array in meerdere stukken hakken? Kun je anders misschien iets beter uitleggen wat je precies wilt?
 

28/08/2011 20:12:40
Quote Anchor link
Sorry, ik ben eigenlijk al een stukje verder. Ik heb de onderstaande code met output. Alleen wil ik dat er maar één tegelijk word weergegeven, geen twee. Ik heb al heel wat geprobeerd (loop, while, for), maar toch lukt het niet. Kan iemand helpen?

Mijn code:
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
    public function multipleNotices($messages = array())
    {
        /**
         * Check if the array is not empty, if he is,
         * return nothing
         */
        if (!empty ($messages))
        {  
            /**
             * Create an foreach function that split the
             * messages
             */
            foreach ($messages as $message) {
                echo $this->displayNotice($message);
                    
            }    
        }
    }


Ik krijg dit als output, maar het moet eigenlijk één voor één:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<div id="error-box" class="notice">Eerste bericht</div>
<div id="error-box" class="notice">Het tweede vericht</div>
Gewijzigd op 28/08/2011 20:13:11 door
 
Kees Schepers

kees Schepers

28/08/2011 20:13:32
Quote Anchor link
Maar dat is toch ook 1 voor 1? :p Hoe zou je de output willen zien?

Je wilt dat alles in 1 div zit?
Gewijzigd op 28/08/2011 20:14:01 door kees Schepers
 

28/08/2011 20:18:28
Quote Anchor link
Nee, ik zou dit als output willen. (Het is trouwens een form, vandaar die messages array). Kan het niet met een for of while die stopt als hij 1 element heeft?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div id="error-box" class="notice">Eerste bericht</div>
 
- SanThe -

- SanThe -

28/08/2011 20:26:47
Quote Anchor link
Allard Jansen op 28/08/2011 20:18:28:
Kan het niet met een for of while die stopt als hij 1 element heeft?


foreach ($messages as $message) {
echo $this->displayNotice($message);
break;
}
 

28/08/2011 20:39:42
Quote Anchor link
Sorry, maar dat werkt helaas niet. Ik krijg enkel bericht één. Maar geen twee. Kan het niet met een while of for?
 
- SanThe -

- SanThe -

28/08/2011 20:52:31
Quote Anchor link
Je wilt er toch maar één.
 

28/08/2011 21:33:37
Quote Anchor link
Ja, maar nu krijg ik er geen.
 
- SanThe -

- SanThe -

28/08/2011 21:37:03
Quote Anchor link
Je krijgt nu de eerste.
Als je niks te zien krijgt zal die eerste leeg zijn.
 
Jacco Brandt

Jacco Brandt

28/08/2011 21:53:19
Quote Anchor link
echo $this->displayNotice($messages[0])
 
- SanThe -

- SanThe -

28/08/2011 21:55:25
Quote Anchor link
Jacco Brandt op 28/08/2011 21:53:19:
echo $this->displayNotice($messages[0])


Haha, dit is inderdaad het simpelst. ;-)
 

29/08/2011 14:59:52
Quote Anchor link
Ja, heb ik ook el geprobeerd. Helaas werkt het niet. Kan het niet in combinatie met een while? Ik ben daar namelijk niet zo'n ster in...
 
- SanThe -

- SanThe -

29/08/2011 15:04:04
Quote Anchor link
Waarom zou die code niet werken?
Je moet echt meer info geven.
 

29/08/2011 15:19:05
Quote Anchor link
Oke, ik zou het nog even duidelijk uitleggen. Ik gebruik deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
foreach ($messages as $message) {
    echo $message;
}

Als ik deze uitvoer krijg ik deze output terug:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Array ( [0] => Voer een geldige voornaam in )
Array ( [0] => Voer een achternaam in )

Twee arrays dus, beide met een bericht. Deze berichten worden automatisch gemaakt via een form element. Als een veld goed is ingevuld, verdwijnt hij dus. Dan krijg je een lege array. Ik wil alleen maar één bericht te gelijk laten zien. Dus de output moet veranderen. De bovenstaande code moet dus veranderen in deze.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Array ( [0] => Voer een geldige voornaam in )

Je ziet het dus, alleen de eerste array word als output gegeven. De andere niet. Hoe kan ik dit in mijn foreach (of er buiten), doen? Kan dat met een while, for, of loop? Want eigenlijk moet ik de maximale output naar 1 zetten. Kan iemand helpen?
Gewijzigd op 29/08/2011 15:19:49 door
 
- SanThe -

- SanThe -

29/08/2011 15:43:50
Quote Anchor link
De gegeven oplossingen voldoen als oplossing van jouw vraag. Is dat niet het geval dan zal je toch je vraag anders moeten formuleren.
 

29/08/2011 15:48:07
Quote Anchor link
Welke methode kan ik dan gebruiken? Want $messages[0] werkt helaas niet...

Edit:
Het is me inmiddels gelukt. Ik heb de Array eens goed bestudeerd. Deze code werkt perfect:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
            if(empty ($messages[0]))
                return $this->displayNotice(next($messages));
            
            /**
             * Return the randomized message back
             */
            return $this->displayNotice($messages[0]);
Gewijzigd op 29/08/2011 15:54:30 door
 
- SanThe -

- SanThe -

29/08/2011 15:54:38
Quote Anchor link
Allard Jansen op 29/08/2011 15:48:07:
Welke methode kan ik dan gebruiken? Want $messages[0] werkt helaas niet...


Doe eens een var_dump() op $messages
 
Ozzie PHP

Ozzie PHP

29/08/2011 15:55:23
Quote Anchor link
echo $messages[0];

buiten je foreach.

p.s. als dat niet werkt probeer eens:

echo $messages[0][0];
 
Mark L

Mark L

29/08/2011 16:11:49
Quote Anchor link
Aha, dus er zitten lege arrays in $messages. Volgens mij is dit niet echt de beste manier, om twee redenen:

1). Je kunt beter niet het bericht er eerst inzetten en er dan weer uithalen (dat klinkt nogal besluiteloos) Een beetje van: Oh, het zal wel fout zijn. Oh nee! Het is toch goed, we halen het er toch maar uit.
2). Wat is het nut van verschillende arrays als daar alleen maar één zinnetje in staat?

Een beter idee lijkt mij:
Geef ieder element één of meerdere error-messages. Deze slaat hij 'lokaal' op (dus bij zichzelf, in een variabele die HIJ alleen gebruikt). Dan controleert hij het element. Is het fout, dan voeg je de error-message toe (aan een algemene array), is het goed, dan doe je niets.

Trouwens, waarom met arrays werken als je er maar één wilt laten zien?

Hoezo trouwens maar één laten zien? Ja, 10 errors kan natuurlijk als heel veel overkomen (als je dat plots voor je hebt), maar dat heb ik liever dan 10 keer mijn ingevulde gegevens controleren en verbeteren.

Maar nu je dit hebt gelezen, en tóch door wilt gaan met jouw aanpak. Je moet bij SanThe's code van 28/08/2011 20:26:47 gewoon een if toevoegen die controleert of de array NIET leeg is. Dus !empty($message) { echo $message[0]; break; }

Ik hoop dat je er wat aan hebt en ik hoop vooral dat je even aan de logica denkt. Want - als ik je probleem begrijpt - is dit niet echt een logische aanpak.

Toevoeging op 29/08/2011 16:12:55:

Oh, dit bericht had ik langer open dan ik dacht - zo te zien...
 

29/08/2011 16:26:30
Quote Anchor link
Ja, dank je. Aan die lege Array's kan ik helaas zelf niks doen. Dat komt door Zend Form. Toch erg bedankt voor jullie hulp!
 

Pagina: 1 2 volgende »



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.