Kleines problem mit den Arrays

Bansi

Mitglied
Schönen guten Abend,
zur Zeit bin ich dabei meine Fähigkeiten in Sachen PHP zuverbessern und fange an langsam
mit Arrays zuarbeiten.

Folgendes Problem:
Ich möchte gerne aus einer Datenbank 2 Werte auslesen, das klappt soweit... Nun aber wenn ich sie in eine Array speicher und sie ausgeben lassen werden mir nicht alle angezeigt
die normal darin enthalten sein sollten

Das Zeigt mir mein Echo ohne Array an:
34.00 - Setthrah
11.00 - Siamun
0.00 - Zinsbock
34.00 - Altanas
34.00 - Kaeso
34.00 - Livana

soweit stimmt das auch, aber mit Array fehlt einiges:
Livana [ 34.00 ]
Siamun [ 11.00 ]
Zinsbock [ 0.00 ]

Ich versteht das irgendwie nicht, wäre nett wenn ihr mir dazu helfen könntet.
Hier ist der Code:

PHP:
 //Ist in einer While Schleife drin
 //$member_name ist in dem Fall z.b Setthrah und $member_dkp 34
$daemonologe_a[$member_dkp] = $member_name;
 //auserhalb der Schleife
Und hier scheint wohl der Fehler zusein:
PHP:
foreach($daemonologe_a as $key => $wert)
{
      echo $wert. " [" .$key. "]<br>";
}

Ich hoffe wie gesagt ihr könnt mir bei dem Fehler helfen :rolleyes:

Dann gleich noch eine kleine Frage, wenn ich die Array sortieren möchte nehme ich asort($var) ist das richtig? Die hohe Zahl soll oben anfangen und dann weiter absteigen.


Mfg Sebastian
 
Das ist hier fast schon ein logischer Fehler. Du hast den Array-Key 34.00 mehrfach.

Das ist bei deinem Array:
PHP:
$arr[34.00] = "Setthrah";
$arr[34.00] = "Altanas";
$arr[34.00] = "Kaeso";
$arr[34.00] = "Livana";

Du siehst das du eine variable immer wieder änderst ;) als würdes du schreiben:
PHP:
$x = "Setthrah";
$x = "Altanas";
$x = "Kaeso";
$x = "Livana";

echo $x;

Rauskommen wird "Livana" wie du es von Variablen gewohnt bist :)
Von daher dreh das lieber um:
PHP:
$arr["Setthrah"] = 34.00;
// ... usw
 
Ohgott nein das ist ja schon peinlich :rolleyes:, darauf bin ich nicht gekommen und ich schau mir das schon seit einer Stunde an.

Vielen lieben Dank (!)
 
Zuletzt bearbeitet:
Kein Problem. Mir ist der Fehler am Anfang auch ein paar mal passiert. ^ ^
Aber Erfahrung ist die Summe aller Fehler. ;)

Viel Spaß und Erfolg beim PHP lernen und Scripten.

-Zod
 
Hab leider immer noch ein kleines Problem :(
hab nun die 4 Sortier Funktionen versucht von asort bis krsort leider hat es nicht das gewünscht Ergebniss gebracht:

Bragnor [ 17.00 ]
Sckies [ 27.00 ]
Xellus [ 34.00 ]
Trider [ 34.00 ]
Zalestra [ -15.00 ]
Neritan [ 0.00 ]

Die 34 sollte oben stehen und die Minus werte ganz unten, gibts noch eine andere Möglichkeit

PHP:
function sort_dkp($sort) {
	asort($sort);
	$ausgabe = "";
	foreach($sort as $key => $wert)
    	{
      	 $ausgabe.= $key. " [" .$wert. "]<br>";
   	}
	return $ausgabe;
}

Lg
 
Nur eine Ahnung - werde es gleich selbst testen.
Jag dein Array mal dadurch:

PHP:
arsort($arr, SORT_NUMERIC);

Es sollte das Array umgekehrt sortiert werden und die Werte numerisch verglichen werden.

Links dazu:
arsort() -> http://de2.php.net/manual/en/function.arsort.php
sogenannte "Flags" (SORT_NUMERIC) -> http://de2.php.net/manual/en/function.sort.php

EDIT: Klappt. Hinweis: asort() sortiert die Werte aufsteigend, arsort() sortiert umgekehrt. Bei dem ersten Link findest ganz viel zu Arrays :)
 
Zuletzt bearbeitet:
Mein scheint nicht wirklich zufunktionieren

Lustgewinn [ 17.00 ]
Tyvo [ -15.00 ]
Nahilia [ -5.00 ]
Sesha [ 17.00 ]
Yiluna [ 0.00 ]

geht das evtl. nur wenn der Zahlenwert als erstes gespeichert ist?

EDIT:

auch mit asort, scheint es nicht zugehen
PHP:
function sort_dkp($sort) {
	asort($sort, SORT_NUMERIC);  
	$ausgabe = "";
	foreach($sort as $key => $wert)
    	{
      	 $ausgabe.= $key. " [" .$wert. "]<br>";
   	}
	return $ausgabe;
}

find ich etwas seltsam :(
 
Zuletzt bearbeitet:
Hm. Das sieht aus als hättest du ksort verwendet. Komisch.
So verhält sich arsort() bei mir im Moment nicht.

EDIT: Hinweis: arsort() - mit R mittendrin ;) und ein SORT_NUMERIC dazu -> arsort($sort, SORT_NUMERIC);

So siehts bei mir aus:
PHP:
$a[Bragnor] = "17.00";
$a[Sckies] = "27.00";
$a[Xellus] = "34.00";
$a[Trider] = "34.00";
$a[Zalestra] = "-15.00";
$a[Neritan] = "0.00";
arsort($a);
print_r($a);

Und die Ausgabe dazu ist bei mir:
Code:
Array (
  [Trider] => 34.00
  [Xellus] => 34.00
  [Sckies] => 27.00
  [Bragnor] => 17.00
  [Neritan] => 0.00
  [Zalestra] => -15.00
)

Mich würde interessieren was bei dir Ausgegeben wird, wenn du dieses hier machst:
PHP:
print_r($sort);
arsort($sort, SORT_NUMERIC);
print_r($sort);

Einfach mal die Ausgabe im Browser dazu, hier rein schreiben ;)
 
Also

das is meine ausgabe

Array ( [Setthrah] => 34.00 [Siamun] => 11.00 [Zinsbock] => 0.00 [Altanas] => 34.00 [Kaeso] => 34.00 [Livana] => 34.00 )
Array ( [Kaeso] => 34.00 [Livana] => 34.00 [Altanas] => 34.00 [Zinsbock] => 0.00 [Siamun] => 11.00 [Setthrah] => 34.00 )

und hier noch eine andere Array
Array ( [Neritan] => 0.00 [Trider] => 34.00 [Xellus] => 34.00 [Sckies] => 27.00 [Zalestra] => -15.00 [Bragnor] => 17.00 )
Array ( [Zalestra] => -15.00 [Bragnor] => 17.00 [Sckies] => 27.00 [Xellus] => 34.00 [Trider] => 34.00 [Neritan] => 0.00 )
 
Zuletzt bearbeitet:
Ok. Ich habe jetzt 15 Minuten auf deine Ausgabe gestarrt und aus dem kleinen Problem wird ein immer größeres.

arsort() macht absolut nicht das was es soll.

Viel schlimmer: Man erkennt ein Schema zwischen alten und neuen Array:
  • Das vorletzte wird das erste
  • Das letzte wird das zweite
  • Das erste wird zum letzten
  • Das zweite wird zum vorletzten usw...

Als würde er mittendrin noch eine Kombination aus array_slice() und array_reverse() machen.
Kurz gesagt: Eine Nacht drüber schlafen ;)
Oder es ist noch einer wach und schaut auch grad zu.

Im Moment hoffe ich das du PHP4 oder PHP5 benutzt. Das kriegst zur Not raus indem du bei der Ausgabe von
PHP:
echo  $_SERVER["SERVER_SOFTWARE"];
die Zahl rechts neben PHP ansiehst. Im Extremfall muss man sich den ganzen Quelltext ansehen.

Ich werd mich hinlegen und bisschen nachdenken.
Reicht bestimmt morgen eine Antwort ;)
Jut nacht
 
Zurück