Nadine: Fehler bei Array sortieren

Hi,

ich will mit

<?
$array1 = array("2000345636","30003463465","4000345634636363","100034560");
krsort($array1,SORT_NUMERIC );

foreach ($array1 as $value)
{
echo "Wert: $value<br>\n";
}

?>

ein Array sortieren. Leider werden die Zahlen aber nicht in umgekehrter Reihenfolge sortiert, sondern so:

Wert: 100034560
Wert: 4000345634636363
Wert: 30003463465
Wert: 2000345636

Was mache ich falsch?

Gruss Nadine

  1. Hi,

    $array1 = array("2000345636","30003463465","4000345634636363","100034560");
    krsort($array1,SORT_NUMERIC );

    das sortiert bestimmt richtig

    foreach ($array1 as $value)
    {
    echo "Wert: $value<br>\n";
    }

    foreach gibt die Daten irgendwie aus, nicht in der Reihenfolge
    verwende eine for-Schleife oder ähnliches...

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Hi

      foreach gibt die Daten irgendwie aus, nicht in der Reihenfolge
      verwende eine for-Schleife oder ähnliches...

      wenn ich das mit

      for($x_presse=0;$x_presse<count($array1);$x_presse++)
      {
      echo "Wert: $array1[$x_presse]<br>\n";
      }

      habe ich das gleiche Problem ???

      Was nun??

      Gruss, Nadine

  2. Hi Nadine,

    die Sortier-Funktion arbeitet richtig und auch foreach() gibt die Werte korrekt aus.
    krsort() schreibt aber das Ergebnis in ein neues Array, $array1 wird nicht verändert.

    Damit sollte es funktionieren:
    $array1 = krsort($array1, SORT_NUMERIC);

    Gruß,
    Danny

    1. Hi Danny

      Damit sollte es funktionieren:

      habs probiert, bekomme aber folgenden Fehler:

      Warning: Variable passed to each() is not an array or object in C:...\inhalt.php on line 30

      Der Quelltext - evtl kannst Du mir weiterhelfen:

      <table cellpadding=2 cellspacing=0 border=0 width="100%">
      <?
      //Presseberichte
      $array_presse = array();
      $datei_presse = "liste.txt";
      $array_presse = @file($datei_presse);
      for($x_presse=0;$x_presse<count($array_presse);$x_presse++)
      {
      $string_presse = $array_presse[$x_presse];
      $presse_txt = explode("|",$string_presse);
      $datum_presse = explode('.',$presse_txt[0]);
      $sekunde_presse=(date('s',time()))+$x_presse;
      $datum_UNIX_presse = mktime((date('H',time())),(date('i',time())),$sekunde_presse,$datum_presse[1],$datum_presse[0],$datum_presse[2]);
      $array_presse1 = array_merge_recursive($array_presse1,array( "_".$datum_UNIX_presse."_" => $presse_txt[1]."|".$presse_txt[2]."|".$presse_txt[3]));
      }

      $array_presse1 = krsort($array_presse1, SORT_NUMERIC);

      while(list($key_presse,$val_presse)=each($array_presse1))
      {
      //echo $key_presse."<br />";
      $bgcolor = ($bgi++ % 2 == 0 ? '#eeeeee' : '#ffffff');
      $datum_UNIX_clear_presse = eregi_replace("_","",$key_presse);
      $inhalt_presse= explode('|',$val_presse);
      echo "<tr>";
      echo "<td align=left bgcolor="".$bgcolor."" width="1"><b>".date('d.m.y',$datum_UNIX_clear_presse)."</b></td>";
      echo "<td align=left bgcolor="".$bgcolor."" width="90%"><b>".$inhalt_presse[0]."</b>, ".$inhalt_presse[1]."</td>";
      echo "<td align=right bgcolor="".$bgcolor."" width="9%"><a href="".$inhalt_presse[2]."">Bericht lesen</a></td>";
      echo "</tr>";
      }
      ?>
      </table>

      Text-Datei Inhalt:
      12.12.83|Ein Titel von früher|Mixbuch|440075113_presse.php

      Daaaaanke ....

      1. Hi Nadine,

        nobody's perfect! Sorry, ich habe mich gerirrt. krsort() gibt nur einen Interger-Wert zurück, demnach ist:

        $array_presse1 = krsort($array_presse1, SORT_NUMERIC);

        falsch und erzeugt eine Warnung.

        krsort($array_presse1, SORT_NUMERIC);

        ist doch korrekt, also muß der Fehler woanders sein. krsort() sortiert übrigens nach Schlüsseln, ist das denn überhaupt gewollt?

        Und ist

        while(list($key_presse,$val_presse)=each($array_presse1))

        denn nicht gleichbedeutend mit
        foreach ($array_presse1 as $kay_presse => $val_presse)
        was eigentlich kürzer und einleuchtender ist?

        Mhmmm... *grübelnd*

        Danny