Array samenvoegen
Ik wil graag dat de onderstaande array:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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')
);
?>
$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)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
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)
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
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);
?>
$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
heb je post nietgelezen, maar ik antwoord het naar de naam van je post
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
maar ge kunt die toch gwn overschrijven???
want als ge geen array_merge gebruikt, dan verdwijnt de oude array
is de opbouw altijd op deze manier? open -> 3 tekst array's -> open -> 3 tekst array's end dan sluiten.
Code (php)
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
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>';
?>
$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>';
?>
Maar kan jij kort uitleggen wat nou het verschil is tussen $n++ en ++$n?
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)
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Perfecte uitleg. Bedankt.
@jan wat gaat dit verschil hebben in de output???
Bij de eerste wordt het $array[0] = 'Hallo wereld!'; en bij de tweede wordt het $array[1] = 'Hallo wereld!';
Hartelijk bedankt Jan Koehoorn. Zoals SanThe al zei; een nette oplossing