php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
implode() - warum bekomme ich diese Ausgabe???


 
bajana
02-12-2005, 13:07 
 
Ich habe eine Schleife, mit der ich einen Array fülle, und zwar kopiere ich im Prinzip einen anderen Array, nur füge ich an einer Stelle ein neues Element ein und verrutsche alle anderen um eine Position nach hinten.

Nach dem befüllen schaue ich den Array an und habe das neue Element an der Gewünschten Stelle, z.B. an der 2. Stelle.

Nach dem implode() steht das neue Element dann leider am Ende, alle anderen Elemente sind wie im alten Array.

Meine Ausgaben aus dem Echo sehen wie folgt aus:

"einsHier ist das neue Unterkapitel!zweidreivierfünfsechssieben

eins|zwei|drei|vier|fünf|sechs|sieben|Hier ist das neue Unterkapitel!"

Wie kann das sein, was mache ich falsch?


for ($z = 0; $z < $anz; $z++) {
//Bis zum einfügen des neuen Elements bleibt alles gleich
if($z <= $unterkapnr){
$napfl[$z] = $apfl[$z];
}
//Nach dem neuen Element werden alle Elemente nach hinten verrutscht
elseif ($z > ($unterkapnr+1)){
$z1=$z-1;

$napfl[$z] = $apfl[$z1];
}
}
// Hier wird das neue Element eingefügt
$uk = $unterkapnr+1;
$napfl[$uk]="Hier ist das neue Unterkapitel!";
//Damit überprüfe ich ob mein Array korrekt gefüllt ist
echo $napfl[$uk];
echo $napfl[0];
echo $napfl[1];
echo $napfl[2];
echo $napfl[3];
echo $napfl[4];
echo $napfl[5];
echo $napfl[6];
echo $napfl[7];
// jetzt möchte ich daraus einen String machen
$myapfl= implode("|", $napfl);
//nun schaue ich was in dem String steht
echo $myapfl;

 
mrhappiness
02-12-2005, 13:14 
 
$kapitel = range(1, 6);
$neu = 'Neues Kapitel 2';
$neu_pos = 2;

echo '<pre>'.print_r($kapitel, true).'</pre>';

$kapitel = array_merge(
array_slice($kapitel, 0, $neu_pos - 1),
array($neu),
array_slice($kapitel, $neu_pos - 1));

echo '<pre>'.print_r($kapitel, true).'</pre>';

 
bajana
02-12-2005, 13:34 
 
Danke, viel eleganter, versteh aber immer noch nicht, warum meine Version nicht getan hat. Also rein aus intresse, wenn jemand den Fehler sieht....

 
mrhappiness
02-12-2005, 13:41 
 
Der neue Eintrag hat den richtigen Index (Tipp: Ausgabe mit print_r), aber PHP sortiert nicht automatisch nach dem Index, dazu brauchst du ksort


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:32 Uhr.