array_push spinnt

Alles, was PHP betrifft, kann hier besprochen werden.

array_push spinnt

Postby thorsin » 18. March 2006 14:02

folgendes, ich habe ne sortierfunktion, die mir ein array zurückgeben soll. nur leider weigert sich die funktion das array als ganzes auszuspucken, mit echo jedoch erhalte ich alle werte, die drinstehen sollten:
Code: Select all
   function menusort ($array2sort,$parentID){
      if (!isset($sorted))$sorted = array();
      if (!isset($xy))$xy=0;
      if (count($array2sort[$parentID])==0){
         return;
      }
      for ($pos=0;$pos < count($array2sort[$parentID]);$pos++){
         $strange=(string)$array2sort[$parentID][$pos][0];
         $sorted[$xy]=$strange;
         echo ($strange.' ');
         $xy++;
         menusort($array2sort, $array2sort[$parentID][$pos][1]);
      }
      return $sorted;
   }

wie gesagt, array_push liefert auch nix besseres zurück, als wenn ichs so mache. per echo sind alle elmente da:
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 18. March 2006 14:23

Verräts du uns auch was das Ding machen sollen (mit ein paar Beispieldaten)?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 18. March 2006 14:31

es sortiert ein array, das nach parentIDs geordnet ist so, dass es nachher die form
-level1
--level2
--level2
---level3
--level2
-level1
-level1

hat, also immer die kinder zu den parents rausfindet... wie gesagt, mit echo gibts auch schön die richtige reihenfolge aus, mit array_push, oder wie auch immer mit nem array gibts nur die level1-objekte her
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 18. March 2006 14:42

Sorry, habs immer noch nicht verstanden :-/

Kannst du nicht mal ein konketes Beispielarray posten das du der Funktion übergibst. Und ein zweites so, wie es die Funktion herausgeben soll.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 18. March 2006 14:50

Code: Select all
$beispiel =
array (
    [0]=> array (
        [0]=> array (
            [0]=>stringHier
            [1]=>1(ID)
            )
        [1]=>array(
            [0]=>neuerString
            [1]=>2 (ID)
            )
        )
    [1]=>array(
        [0]=>array(
            [0]=>dritterString
            [1]=>3 (ID)
        )
    )
)


zurück hätte ich gerne:
Code: Select all
retArray=array(
    [0]=>stringHier
    [1]=>dritterString
    [2]=>neuerString
)

bekommen tue ich aber nur:
Code: Select all
retArray=array(
    [0]=>stringHier
    [1]=>neuerString
)


echo liefert aber:
Code: Select all
stringHier dritterString neuerString

will heissen, dass array wird schon so wie es soll durchlaufen, nur werden die rückgabewerte warum auch immer nicht ordentlich in mein array geschrieben
Last edited by thorsin on 18. March 2006 14:55, edited 1 time in total.
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 18. March 2006 14:54

Und als $parentID hast du hier was genommen?

Oder anders herum, welche Ausgabe könnte es mit einer anderen $parentID bei diesem Ausgangsarray noch geben?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 18. March 2006 14:55

als startende parentID wird immer 0 genommen

für ne andere parent ist das beispiel zu klein,
für 1 zb wäre das dann:
Code: Select all
$retArray(
[0]=>dritterString
)
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby thorsin » 18. March 2006 18:07

ok, fehler gefunden...
der function steht beim rekursiven aufruf das array nicht zur verfügung, nu fällt mir aber nur der weg ein die var vorher zu deklarieren und dann in der funktion GLOBAL $sorted zu machen, dat is aba nich schick, hat jemand ne andere idee?
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39


Return to PHP

Who is online

Users browsing this forum: No registered users and 9 guests