Fehler bei Array sortieren
Nadine
- php
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
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
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
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
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 ....
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