Versio

Array samenvoegen

Overzicht Reageren

Zero XT

Zero XT

18/08/2009 21:16:00
Quote Anchor link
Beste php-ers,

Ik wil graag dat de onderstaande array:
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
<?php
$array
= array(
               array('type' => 'open', 'tekst' => 'open1'),
               array('type' => 'tekst', 'tekst' => 'tekst '),
               array('type' => 'tekst', 'tekst' => 'tekst2 '),
               array('type' => 'tekst', 'tekst' => 'tekst3 '),
               array('type' => 'tekst', 'tekst' => 'tekst4 '),
               array('type' => 'open', 'tekst' => 'open2'),
               array('type' => 'tekst', 'tekst' => 'tekst5 '),
               array('type' => 'tekst', 'tekst' => 'tekst6 '),
               array('type' => 'tekst', 'tekst' => 'tekst7 '),
               array('type' => 'sluit', 'tekst' => 'sluit1')
               );

?>



deze array word:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$array
= array(
               array('type' => 'open', 'tekst' => 'open1'),
               array('type' => 'tekst', 'tekst' => 'tekst tekst2 tekst3 tekst4'),
               array('type' => 'open', 'tekst' => 'open2'),
               array('type' => 'tekst', 'tekst' => 'tekst5 tekst6 tekst7 '),
               array('type' => 'sluit', 'tekst' => 'sluit1')
               );

?>


Wat is er gebeurd? Als er meerdere type=tekst achter elkaar zijn dan maakt hij daar een van.
Ik heb het al geprobeerd met de onderstaande code maar ik kom er niet uit.


Wat ik heb:
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
$array
= array(
               array('type' => 'open', 'tekst' => 'open1'),
               array('type' => 'tekst', 'tekst' => 'tekst '),
               array('type' => 'tekst', 'tekst' => 'tekst2 '),
               array('type' => 'tekst', 'tekst' => 'tekst3 '),
               array('type' => 'tekst', 'tekst' => 'tekst4 '),
               array('type' => 'open', 'tekst' => 'open2'),
               array('type' => 'tekst', 'tekst' => 'tekst5 '),
               array('type' => 'tekst', 'tekst' => 'tekst6 '),
               array('type' => 'tekst', 'tekst' => 'tekst7 '),
               array('type' => 'sluit', 'tekst' => 'sluit1')
               );


$stack = array();
$tekst = '';

for($i = 0; $i < count($array); $i++)
{

    if($array[$i]['type'] == 'tekst')
    {

        for($a = $i; $a < count($array); $a++)
        {

            if($array[$a]['type'] == 'tekst')
            {

                $tekst .= $array[$a]['tekst'];
                $i++;
            }

            else
            {
                $stack[] = array('type' => 'tekst', 'tekst' => $tekst);
                $tekst = '';
            }
        }

        
        $stack[] = array('type' => 'tekst', 'tekst' => $array[$i]['tekst']);
        
    }

    else
    {
        $stack[] = $array[$i];
    }
}



print_r($stack);
?>
Gewijzigd op 01/01/1970 01:00:00 door Zero XT
 
PHP hulp

PHP hulp

23/05/2012 21:41:21
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Matthias

Matthias

18/08/2009 21:33:00
Quote Anchor link
array_merge();

heb je post nietgelezen, maar ik antwoord het naar de naam van je post
 
Zero XT

Zero XT

18/08/2009 21:36:00
Quote Anchor link
Misschien is het dan handig om eerst mijn post te lezen;)
array_merge is om 2 array's met elkaar te mergen (smelten).
Ik heb geen 2 array's

Zoals je ook kan zien in de titel van dit topic: Array (zonder s) samenvoegen

Iemand?
Gewijzigd op 01/01/1970 01:00:00 door Zero XT
 
Matthias

Matthias

18/08/2009 21:40:00
Quote Anchor link
ik heb is gelezen,
maar ge kunt die toch gwn overschrijven???
want als ge geen array_merge gebruikt, dan verdwijnt de oude array
 
- Mark -

- Mark -

18/08/2009 21:41:00
Quote Anchor link
is de opbouw altijd op deze manier? open -> 3 tekst array's -> open -> 3 tekst array's end dan sluiten.
 
Jan Koehoorn

Jan Koehoorn

18/08/2009 21:45:00
Quote Anchor link
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
24
25
26
27
28
<?php
    $array1
= array(
        array('type' => 'open', 'tekst' => 'open1'),
        array('type' => 'tekst', 'tekst' => 'tekst '),
        array('type' => 'tekst', 'tekst' => 'tekst2 '),
        array('type' => 'tekst', 'tekst' => 'tekst3 '),
        array('type' => 'tekst', 'tekst' => 'tekst4 '),
        array('type' => 'open', 'tekst' => 'open2'),
        array('type' => 'tekst', 'tekst' => 'tekst5 '),
        array('type' => 'tekst', 'tekst' => 'tekst6 '),
        array('type' => 'tekst', 'tekst' => 'tekst7 '),
        array('type' => 'sluit', 'tekst' => 'sluit1')
    );

    $array2 = array ();
    $type = null;
    $n = -1;
    foreach ($array1 as $v) {
        if ($v['type'] != $type) {
            if ($n >= 0) {
                $array2[$n]['tekst'] = trim ($array2[$n]['tekst']);
            }

            $type = $v['type'];
            $array2[++$n] = array ('type' => $type, 'tekst' => '');
        }

        $array2[$n]['tekst'] .= ' ' . $v['tekst'];
    }

    echo '<pre>' . print_r ($array2, true) . '</pre>';
?>
 
- SanThe -

- SanThe -

18/08/2009 22:01:00
Quote Anchor link
@Jan Koehoorn: Dat is weer een nette oplossing.
Maar kan jij kort uitleggen wat nou het verschil is tussen $n++ en ++$n?
 
Jan Koehoorn

Jan Koehoorn

18/08/2009 22:05:00
Quote Anchor link
Hoi SanThe,

ja. De $n++ noemt men een postfix operator. Dat houdt in dat de variabele eerst gebruikt wordt in het statement en vervolgens opgehoogd. ++$n heet een prefix operator. In zo'n geval wordt de var eerst opgehoogd, en dan pas gebruikt.

Edit: kort voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $n
= 0;
    $array = array ();
    $array[$n++] = 'Hallo wereld!';
    
    echo '<pre>' . print_r ($array, true) . '</pre>';

    $n = 0;
    $array = array ();
    $array[++$n] = 'Hallo wereld!';
    
    echo '<pre>' . print_r ($array, true) . '</pre>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
- SanThe -

- SanThe -

18/08/2009 22:15:00
Quote Anchor link
Perfecte uitleg. Bedankt.
 
Matthias

Matthias

18/08/2009 22:54:00
Quote Anchor link
@jan wat gaat dit verschil hebben in de output???
 
- Mark -

- Mark -

18/08/2009 23:01:00
Quote Anchor link
Bij de eerste wordt het $array[0] = 'Hallo wereld!'; en bij de tweede wordt het $array[1] = 'Hallo wereld!';
 
- SanThe -

- SanThe -

18/08/2009 23:02:00
Quote Anchor link
Kan je uiteraard zelf even uitproberen natuurlijk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
Array
(
    [0] => Hallo wereld!
)

Array
(
    [1] => Hallo wereld!
)
 
Zero XT

Zero XT

19/08/2009 02:18:00
Quote Anchor link
Hartelijk bedankt Jan Koehoorn. Zoals SanThe al zei; een nette oplossing
 



Overzicht Reageren