• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

problem mit mehrdimensionalem array

mustang

Mitglied
hallo leute,

ich habe irgendwie ein problem mit einem mehrdimensionalen array. warum auch immer. ich verstehe das einfach nicht.
mein array sieht so aus:

PHP:
$orgmonate = array();

$orgmonate[01] = array("Name" => "Januar", "Tage" => 31);
$orgmonate[02] = array("Name" => "Februar", "Tage" => 28);
$orgmonate[03] = array("Name" => "März", "Tage" => 31);
$orgmonate[04] = array("Name" => "April", "Tage" => 30);
$orgmonate[05] = array("Name" => "Mai", "Tage" => 31);
$orgmonate[06] = array("Name" => "Juni", "Tage" => 30);
$orgmonate[07] = array("Name" => "Juli", "Tage" => 31);
$orgmonate[08] = array("Name" => "August", "Tage" => 31);
$orgmonate[09] = array("Name" => "September", "Tage" => 30);
$orgmonate[10] = array("Name" => "Oktober", "Tage" => 31);
$orgmonate[11] = array("Name" => "November", "Tage" => 30);
$orgmonate[12] = array("Name" => "Dezember", "Tage" => 31);
ich lasse es mir auf zwei verschiedene arten ausgeben:

PHP:
echo $orgmonate[01][Name];echo $orgmonate[01][Tage]; echo "<br>";
echo $orgmonate[02][Name];echo $orgmonate[02][Tage]; echo "<br>";
echo $orgmonate[03][Name];echo $orgmonate[03][Tage]; echo "<br>";
echo $orgmonate[04][Name];echo $orgmonate[04][Tage]; echo "<br>";
echo $orgmonate[05][Name];echo $orgmonate[05][Tage]; echo "<br>";
echo $orgmonate[06][Name];echo $orgmonate[06][Tage]; echo "<br>";
echo $orgmonate[07][Name];echo $orgmonate[07][Tage]; echo "<br>";
echo $orgmonate[08][Name];echo $orgmonate[08][Tage]; echo "<br>";
echo $orgmonate[09][Name];echo $orgmonate[09][Tage]; echo "<br>";
echo $orgmonate[10][Name];echo $orgmonate[10][Tage]; echo "<br>";
echo $orgmonate[11][Name];echo $orgmonate[11][Tage]; echo "<br>";
echo $orgmonate[12][Name];echo $orgmonate[12][Tage]; echo "<br>";

print_r ($orgmonate);
und die ausgabe sieht dann so aus:

Code:
Januar31
Februar28
März31
April30
Mai31
Juni30
Juli31
[COLOR=Red]September30
September30[/COLOR]
Oktober31
November30
Dezember31
Array (
[1] => Array([Name] => Januar [Tage] => 31 )
[2] => Array([Name] => Februar [Tage] => 28 )
[3] => Array([Name] => März [Tage] => 31 )
[4] => Array([Name] => April [Tage] => 30 )
[5] => Array([Name] => Mai [Tage] => 31 )
[6] => Array([Name] => Juni [Tage] => 30 )
[7] => Array([Name] => Juli [Tage] => 31 )
[COLOR=Red][0] => Array([Name] => September [Tage] => 30 )[/COLOR]
[10] => Array([Name] => Oktober [Tage] => 31 )
[11] => Array([Name] => November [Tage] => 30 )
[12] => Array([Name] => Dezember [Tage] => 31 )
)
warum kommt bei der ersten ausgabe der september 2mal vor und warum ist bei print_r " [0] => Array ( [Name] => September [Tage] => 30 )" und der august kommt in keinem vor....
ich verstehe das einfach nicht.

habe das auch mal in einer "leeren" php-datei ausprobiert, ohne jeglichen code vorher und es bleibt genau so...
 
Ich vermute mal, dass die vorangestellte Null bei den Zahlen 1-9 Probleme mit PHP verursacht. Entweder du löscht diese, oder du setzt die Indize in Anführungszeichen, dann sollte es funktionieren.
 
Zuletzt bearbeitet:
da es direkt zu dem thema passt, eine weitere frage:
mein array

PHP:
$weekdays[0] = array("Name" => "Sonntag", "Kurz" => "So", "Nr" => 7);
$weekdays[1] = array("Name" => "Montag", "Kurz" => "Mo", "Nr" => 1);
$weekdays[2] = array("Name" => "Dienstag", "Kurz" => "Di", "Nr" => 2);
$weekdays[3] = array("Name" => "Mittwoch", "Kurz" => "Mi", "Nr" => 3);
$weekdays[4] = array("Name" => "Donnerstag", "Kurz" => "Do", "Nr" => 4);
$weekdays[5] = array("Name" => "Freitag", "Kurz" => "Fr", "Nr" => 5);
$weekdays[6] = array("Name" => "Samstag", "Kurz" => "Sa", "Nr" => 6);
ich würde das ganze jetzt gerne die kurzformen der tage sortiert nach der Nr ausgeben.
wie geht das?
(also mit einer for-schleife)

edit:
gut ich habs^^

Code:
$sortArray = array();
    foreach($weekdays as $key => $array) {
        $sortArray[$key] = $array["Nr"];
    }

    array_multisort($sortArray, SORT_ASC, SORT_NUMERIC, $weekdays);

wie bekomme ich das jetzt aber hin, dass meine sortierung nach der ausgabe wieder so ist, wie am anfang? ^^
 
Zuletzt bearbeitet:
soweit war ich jetzt auch^^
aber dachte da gibts vielleicht irgendeinen direkten befehl. sowas, wie array auf start zurücksetzen, oder so
 
wofür sollte ich die nutzen?
brauche ja deutsche angaben, etc.

habe noch ne nette sache mit mehrdimensionalen arrays^^

ich habe ein array (ursprünglich zwei, aber schon zusammengefügt)
ausgabe:
Code:
Array (
[0] => Array ( [id] => 1 [text] => Text1 )
[1] => Array ( [id] => 2 [text] => Text2 )
[2] => Array ( [id] => 1 [text] => Text1 )
)
und möchte nun den doppelten eintrag ( [0] bzw. [2] ) löschen.
für das löschen von doppelten einträgen gibts ja array_unique, was bei mir auch mit einfachen arrays funktioniert. aber in diesem fall wird [1] und [2] gelöscht.

gut hat sich auch erledigt^^
eigentlich poste ich immer erst, wenn ich keine lösung finde...
aber diesmal habe ich im nachhinein noch eine gefunden^^

Code:
for( $i = 0; $i < ( count($array) - 1 ); $i++ ){

   if( !empty($array[$i]) and isset($array[$i]) ){
      for( $a = $i + 1; $a < ( count($array) ); $a++ ){
         if( $array[$i]["Id"] == $array[$a]["Id"] ){
            unset($array[$a]);
         }
      }
   }

}
 
Zuletzt bearbeitet:
und noch eine schicke sache^^
ich möchte in folgendes array einen eintrag einfügen:

vorher:
Code:
Array
(
    [0] => Array
        (
            [2] => 1
        )

    [1] => Array
        (
            [2] => 1
        )

    [2] => Array
        (
            [2] => 1
        )
)
nachher:

Code:
Array
(
    [0] => Array
        (
            [2] => 1
            [COLOR=Red][6] => 2[/COLOR]
        )

    [1] => Array
        (
            [2] => 1
        )

    [2] => Array
        (
            [2] => 1
        )
)
wie bekomme ich das hin?
array_push geht ja nicht, weil ich eine zuordnung nutze...
 
Zurück
Oben