SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.04.2008, 12:44:00
PHoenix_KM PHoenix_KM ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 41
Beiträge: 2
Doppelte einträge aus einem Mehrdimensionalen Array aussortieren und löschen

Hallo,

ich habe ein Problem mit der Handhabung eines von mir generierten Arrays, welches ich am Ende meiner Frage in Ausschnitten gepostet habe. dieses Array stammt aus einem CMS welches ich gerade dabei bin zu programmieren und stellt die Navigation der Seite da. Die Navigation soll die Möglichkeit bieten beliebig viele Untermenüs zu haben welche nur angezeigt werden wenn die jeweilige Elternseite der aktuellen Seite entspricht. leider habe ich keinen Weg gefunden doppelte Einträge in der Bildung des Arrays zu verhindern, weshalb ich nun am ende diese gerne aus dem array aussortieren möchte. Ich habe es mit array_unique versucht doch leider mußte ich feststellen das dieser Befehl nur bei eindimensionalen Arrays den gewünschten effekt bringt. Nun suche ich nach einem Befehl oder einer Funktion um das untenstehende Array nach 'seitennr' zu durchsuchen und den gesamten Datensatz welcher doppelt verhanden ist auszusortieren, und überflüssige Einträge zu löschen. zur verdeutlichung habe ich das von mir gewünschte array am Ende noch einmal dagestellt.


Vielen Dank schon einmal für Eure Hilfe.


print_r($nav_array);

momentane ist Darstellung:
Array
(
[0] => Array
(
[seitennr] => 1
[unterseite_von] => 0
[ebene] => 0
[position] => 1
[navtitel] => Startseite
)

[1] => Array
(
[seitennr] => 2
[unterseite_von] => 0
[ebene] => 0
[position] => 2
[navtitel] => Grafik
)

[2] => Array
(
[seitennr] => 3
[unterseite_von] => 0
[ebene] => 0
[position] => 3
[navtitel] => Photografie
)

[3] => Array
(
[seitennr] => 11
[unterseite_von] => 3
[ebene] => 1
[position] => 4
[navtitel] => Flora und Fauna
)

[4] => Array
(
[seitennr] => 12
[unterseite_von] => 3
[ebene] => 1
[position] => 5
[navtitel] => Architektur
)

[5] => Array
(
[seitennr] => 13
[unterseite_von] => 3
[ebene] => 1
[position] => 6
[navtitel] => Personen
)

[6] => Array
(
[seitennr] => 15
[unterseite_von] => 13
[ebene] => 2
[position] => 7
[navtitel] => U1 Personen13 EB2
)

[7] => Array
(
[seitennr] => 16
[unterseite_von] => 13
[ebene] => 2
[position] => 8
[navtitel] => U2 Personen 13 EB2
)

[8] => Array
(
[seitennr] => 17
[unterseite_von] => 16
[ebene] => 3
[position] => 9
[navtitel] => U1 Personen 16 EB3
)

[9] => Array
(
[seitennr] => 17
[unterseite_von] => 16
[ebene] => 3
[position] => 9
[navtitel] => U1 Personen 16 EB3
)

[10] => Array
(
[seitennr] => 14
[unterseite_von] => 3
[ebene] => 1
[position] => 11
[navtitel] => Edelsteine
)


soll Dartellung:

Array
(
[0] => Array
(
[seitennr] => 1
[unterseite_von] => 0
[ebene] => 0
[position] => 1
[navtitel] => Startseite
)

[1] => Array
(
[seitennr] => 2
[unterseite_von] => 0
[ebene] => 0
[position] => 2
[navtitel] => Grafik
)

[2] => Array
(
[seitennr] => 3
[unterseite_von] => 0
[ebene] => 0
[position] => 3
[navtitel] => Photografie
)

[3] => Array
(
[seitennr] => 11
[unterseite_von] => 3
[ebene] => 1
[position] => 4
[navtitel] => Flora und Fauna
)

[4] => Array
(
[seitennr] => 12
[unterseite_von] => 3
[ebene] => 1
[position] => 5
[navtitel] => Architektur
)

[5] => Array
(
[seitennr] => 13
[unterseite_von] => 3
[ebene] => 1
[position] => 6
[navtitel] => Personen
)

[6] => Array
(
[seitennr] => 15
[unterseite_von] => 13
[ebene] => 2
[position] => 7
[navtitel] => U1 Personen13 EB2
)

[7] => Array
(
[seitennr] => 16
[unterseite_von] => 13
[ebene] => 2
[position] => 8
[navtitel] => U2 Personen 13 EB2
)

[8] => Array
(
[seitennr] => 17
[unterseite_von] => 16
[ebene] => 3
[position] => 9
[navtitel] => U1 Personen 16 EB3
)


[9] => Array
(
[seitennr] => 14
[unterseite_von] => 3
[ebene] => 1
[position] => 11
[navtitel] => Edelsteine
)
Mit Zitat antworten
  #2  
Alt 17.04.2008, 17:11:08
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Doppelte einträge aus einem Mehrdimensionalen Array aussortieren und löschen

PHP-Code:
$oberarray = Array();

$oberarray[0] = Array();
$oberarray[0]["nr"] = 1;

$oberarray[1] = Array();
$oberarray[1]["nr"] = 1;


for( 
$i 0$i < ( count($oberarray) - ); $i++ ){

   if( !empty(
$oberarray[$i] AND isset($oberarray[$i]) ){
      for( 
$a $i 1$a < ( count($oberarray) ); $a++ ){
         if( 
$oberarray[$i]["nr"] == $oberarray[$a]["nr"] ){
            unset(
$oberarray[$a]);
         }
      }
   }


Hab es jetzt nicht getestet aber sollte funktionieren, musst du sonst nochmal ein bisschen mit rumprobieren^^

Prinzip das da hinter steckt ist folgendes:
Sagen wir mal $oberarray hat 10 Einträge, dann durchläuft die obere Schleife die Einträge mit dem Index 0-8 und für jeden Index 0-8 wird die untere Schleife aufgerufen die dann die Indexnummer von der oberen Schleife übernimmt ( $a = $i + 1 ) und im Index einen weiter springt und ab dieser Position bis zum Ende des Arrays alle Einträge durchläuft und sie miteinander vergleicht...

Was dir in die Quere kommen könnte ist, wenn das $oberarry z.B. nicht von 0-9 im Index geht sonder z.B. 0, 3, 5, 7, 10 u.s.w. hat, dann müsstest du es vorher einmal sortieren, das es wieder 0-9 hat damit es geht...

Ob das so funzt, wie gesagt ka, bin grad rech müde und zu faul zum ausprobieren aber ich denke es sollte so in etwa funzen, das if( !empty ) ist dazu da um bereits gelöschte $oberarray[$a]'s nicht zu prüfen mit der unterschleife, so das er quasi gleich weiterspringt zum nächsten $oberarray[$i] in der oberschleife und nicht versucht einen bereits gelöschten eintrag mit irgendwas zu vergleichen...


gruß,
Ascer
Mit Zitat antworten
  #3  
Alt 17.04.2008, 19:19:53
PHoenix_KM PHoenix_KM ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 41
Beiträge: 2
AW: Doppelte einträge aus einem Mehrdimensionalen Array aussortieren und löschen

Vielen Dank Ascer, das war die lösung die ich brauchte :)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
doppelte array elemente löschen... |Coding PHP für Fortgeschrittene und Experten 7 20.01.2005 18:16:30
Einzelne Daten aus Textdatei Auslesen azubinator PHP Grundlagen 153 17.12.2004 14:36:58
Element löschen in mehrdimensionalen Array DiJae PHP für Fortgeschrittene und Experten 4 12.10.2004 15:43:19
array values auf doppelte einträge prüfen flobee PHP Grundlagen 5 10.06.2004 03:36:52
Doppelte Elemente aus Array löschen LordFuture PHP Grundlagen 7 13.03.2004 17:09:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:01:31 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.


© 2001-2021 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt