array Elemente löschen und aufrücken
Paul
- php
Moin,
habe ein array aus dem ich einige elemente lösche (unset($wert[$i]).
Nun möchte ich die übrig bleibenden Elemente aufrücken lassen. Also das die Zählung der Elemente ohne Lücke weiter geht. Wie mache ich das?
Paul
Hi Paul!
habe ein array aus dem ich einige elemente lösche (unset($wert[$i]).
Nun möchte ich die übrig bleibenden Elemente aufrücken lassen. Also das die Zählung der Elemente ohne Lücke weiter geht. Wie mache ich das?
Mit array_splice().
Der Aufruf von unset() wird dann auch überflüssig.
MfG H☼psel
Vielleicht bin ich zu doof aber ich raffs nicht:
<?php
$list = array ('aaa','aaa','aaa','aaa','123','123','123','123','bbb','bbb','bbb','bbb');
echo 'count='.count($list).'<br>';
print_r($list);
echo '<br>';
for($j=0;$j<count($list);$j++) {
if($list[$j] == $list[$j+1]) {
array_splice($list, $j+1, 1);
}
}
echo 'count='.count($list).'<br>';
print_r($list);
echo '<br>';
?>
Eigentlich möchte ich am ende nur drei Elemente haben...
Hi,
for($j=0;$j<count($list);$j++) {
if($list[$j] == $list[$j+1]) {
array_splice($list, $j+1, 1);
Mit so einer for-Schleife kannst du zwar generell indexbasiert auf das jeweils nächste Array-Element zugreifen; allerdings ist dieses jeweils „nächste“ nicht das, für das du es hältst.
MfG ChrisB
nicht das, für das du es hältst.
Versteh ich zwar nicht aber ich hab's jetzt so gemacht (und es läuft):
<?php
$list_new = Array();
$list = array ('aaa','aaa','aaa','aaa','123','123','123','123','bbb','bbb','bbb','bbb');
echo 'count='.count($list).'<br>';
print_r($list);
echo '<br>';
$i = 0;
for($j=0;$j<count($list);$j++) {
if($list[$j] != $list[$j+1]) {
$list_new[$i] = $list[$j];
$i++;
}
}
echo 'count='.count($list_new).'<br>';
print_r($list_new);
echo '<br>';
?>
Hi,
nicht das, für das du es hältst.
Versteh ich zwar nicht
Dann solltest du mal drüber nachdenken ...
MfG ChrisB
Versteh ich zwar nicht aber ich hab's jetzt so gemacht (und es läuft):
<?php
$list = array ('aaa','aaa','123','aaa','bbb','aaa','123','123','123','123','aaa','bbb','bbb','aaa','bbb','bbb');
?>
hallo ,
Ausweg
<http://de.php.net/manual/de/function.array-unique.php>
<http://de.php.net/manual/de/ref.array.php>
<http://www.selfphp.de/funktionsreferenz/array_funktionen/index.php>
mfg
Hallo,
for($j=0;$j<count($list);$j++) {
if($list[$j] == $list[$j+1]) {
array_splice($list, $j+1, 1);
}
}
da scheint es mir erstmal einfacher und vielleicht auch performanter zu sein, wenn ein neues array erstellt wird. Also Wert ins neue array wenn er ungleich ist.
Grüsse
Cyx23