Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
foreach liefert falsche schlüssel? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
foreach liefert falsche schlüssel?


 
neverknown
27-12-2005, 17:32 
 
guten tag, guten abend

ich hab hier ein kleines prooblem bei dem ich hilfe benötige
und zwar handelt es sich um die liebe foreach schleife
von der ich mir gedacht hatte das sie eigentlich jeden
schlüssel bzw jedes element eines arrays ausgeben kann.
nun hab ich leider einen fall bei dem das nciht so ganz zutrifft

ich habe eine 2 dimensionales array
wobei die lemente der zweiten dimension jetzt nocht so eine rolle spielen, es geht mehr um die erste. ich weiss nicht obs wirklich daran liegt das es 2d ist, ich glaub eher nicht, aber trozdem:

$test[0][0], $test[0][1], $test[0][2], $test[0][3]
$test[1][0], $test[1][1], $test[1][2], $test[1][3]
$test[2][0], $test[2][1], $test[2][2], $test[2][3]
$test[3][0], $test[3][1], $test[3][2], $test[3][3]
$test[4][0], $test[4][1], $test[4][2], $test[4][3]

nun mache ich folgendes:

unset($test[1]); unset($test[2]); unset($test[3]);

wenn ich dieses array jetzt mit einer foreach schleife
durchlaufen würde, würde ich folgende schlüssel bekommen:
0, 1 anstatt von 0 und 4

gibt es eine möglichkeit die an die "richtigen" schlüssel ranzukommen? oder das array neu nummeruisch zu indizieren, sodass aus:
$test[0][0], $test[0][1], $test[0][2], $test[0][3]
$test[4][0], $test[4][1], $test[4][2], $test[4][3]

das hier wird:
$test[0][0], $test[0][1], $test[0][2], $test[0][3]
$test[1][0], $test[1][1], $test[1][2], $test[1][3]

dabei gilt
$test[4][0] = $test[1][0], $test[4][1] = $test[1][1], ...

danke für eure aufmerksamkeit

lg
alex

 
MelloPie
27-12-2005, 17:36 
 
wie sieht denn Deine foreach aus?

 
reallife
27-12-2005, 17:59 
 
Ich würde sagen indem Du ein temporäres Array in Deiner foreach Schleife mit den Keys die übernommen werden dürfen mitschleifst und nach beendeter foreach Schleife das eigentliche Array durch dieses temporäre Array ersetzt:
/*
$test[0][0], $test[0][1], $test[0][2], $test[0][3]
$test[1][0], $test[1][1], $test[1][2], $test[1][3]
$test[2][0], $test[2][1], $test[2][2], $test[2][3]
$test[3][0], $test[3][1], $test[3][2], $test[3][3]
$test[4][0], $test[4][1], $test[4][2], $test[4][3]
*/

$arr_tmp = array();
foreach ( $test as $k => $arr )
{
if ( Ausdruck )
array_push($arr_tmp, $arr);
}
Die Schleife durchläuft dein Array und du musst ja irgendeine Abfrage in dieser Schleife haben und wenn diese Abfrage zutrifft dann hängt die Funktion array_push ein Index an das temporäre Array an.

 
neverknown
29-12-2005, 22:04 
 
danke reallife, gute idee mit noch einem array :)
ich glaub ich denk hin und wieder zu kompliziert..

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:52 Uhr.