php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-03-2010, 20:37
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard Multidimensionales Array generieren

Hallo,

kurz zu mir, bin nämnlich neu hier:
Ich beschäftige mich seit mehreren Jahren hobbymäßig mit PHP. Ich würde mich selbst noch als Anfänger bezeichnen, da mir doch die Praxis fehlt und Vieles kann ich nur mit sehr viel Mühe und Auwand lösen.

Nun zu meinem Problem:
Ich beschreibe mal nur das für euch relevante, sonst würde das den Rahmen sprengen. Ich bekomme einen String pro Datensatz aus einer MySQL Datenbank. Dieser String gibt in gewisser Weise den Pfad innerhalb einer Baumstruktur an. Er hat folgendes Format:
Code:
<treename>:<node_1>.<node_2>.<node_n>
Ein Beispiel währe:
Code:
acme:global.eu.germany.berlin
Die Anzahl der Nodes, also der Verzeichnistiefe ist variabel und kann theoretisch unendlich lang sein (sprich ich will es nicht begrenzen).
Die Gesamtheit dieser Strings möchte ich nun in ein Mehrdimensionen-Array packen welches die Baumstruktur enthält. (Wenn sich eine Baumstruktur auch anders Darstellen lässt lasse ich mich gerne eines Besseren belehren.)
Beispiel:
Ausgangsstrings:
Code:
acme:eu
acme:eu.italy
acme:eu.germany
acme:eu.germany.berlin
acme:eu.germany.munich
acme:eu.italy.rome
Hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen

Stephan
Mit Zitat antworten
  #2 (permalink)  
Alt 28-03-2010, 21:17
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

willkommen im Forum!

Sowas nennt man Gruppenwechsel, falls du weitere Infos darüber googlen willst.

In PHP kann man sowas ganz einfach mit assoziativen Arrays programmieren, so dass es sich praktisch von alleine macht:

PHP-Code:
$data = array();
$data["acme"] = array();
$data["acme"]["eu"] = array();
$data["acme"]["eu"]["italy"] = array();
$data["acme"]["eu"]["germany"] = array();
// ... 
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 28-03-2010, 22:09
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

Gut dieses Prinzip is mir durchaus bekannt.
Problem bei der ganzen Sache istnur ich will dem Array ja dynamisch (in einer Schleife) Dimensionen zum array hinzufügen können.
Mit Zitat antworten
  #4 (permalink)  
Alt 28-03-2010, 22:19
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von stephan1990 Beitrag anzeigen
Problem bei der ganzen Sache istnur ich will dem Array ja dynamisch (in einer Schleife) Dimensionen zum array hinzufügen können.
Dann musst du konkreter werden, denn ein Problem kann ich dabei im Moment nicht erkennen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 28-03-2010, 22:34
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

Ich mache ja um die besagten Strings zu erhalten eine SQL Abfrage. Bei dieser Abfrage erhalte ich eine Anzahl von Datensätzen. In jedem Datensatz steht ein solcher String.
Ich poste mal den Code der Schleife:

PHP-Code:
while($row mysql_fetch_array($query))
{
    
//Hier erhalte ich jeden Schleifendurchlauf über die Variable $row['uni'] den besagten string

Das ganze in kleine stückchen zu unterteilen und so weiter is kein Problem. Nur ich hab jetzt keine ahnung wie ich den String in das entsprechende Array konvertiere. Per explode bekomme ich nur die teilstückchen als Elemente des Arrays. Möchte die aber doch gerne als weitere Dimension hinzufügen. Bzw. als weiteren Schlüssel des Arrays.
Mit Zitat antworten
  #6 (permalink)  
Alt 28-03-2010, 22:39
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Du schaust einfach, ob's die entsprechende Array-Ebene schon gibt.

Wenn nicht, legst du sie an; sonst fügst du ihr ein neues Element hinzu (das ggf. seinerseits wieder ein Array ist).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 28-03-2010, 22:48
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

Da fehlt mir ja schon das verständnis. Wie prüfe ich denn ob es die Array-Eben schon gibt?

Nehmen wir mal an ich hab den String "global.eu". Jetzt will ich testen ob es In meinem Array $data schon den Zweig $data['global']['eu'] gibt. Nun das könnte man ja mit isset machen.
PHP-Code:
while($row mysql_fetch_array($query))
{
    if(isset(
$data.. //und weiter?

Ich kann das ja nicht da reincoden, da ich ja nicht weiß wie viele dimensionen das Array hat etc.

Mein problem ist die umsetzung von "global.eu" nach "$data['global']['eu']".
Mit Zitat antworten
  #8 (permalink)  
Alt 28-03-2010, 22:51
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von stephan1990 Beitrag anzeigen
Da fehlt mir ja schon das verständnis. Wie prüfe ich denn ob es die Array-Eben schon gibt?
Mit isset, ggf. is_array.

Zitat:
Ich kann das ja nicht da reincoden, da ich ja nicht weiß wie viele dimensionen das Array hat etc.
Dann teste eine Dimension nach der anderen, in einer Schleife.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 28-03-2010, 22:53
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

wie soll ich denn sagen dass der eine dimension höher springen soll? Für jede weitere Dimension die ich testen will muss ich doch zwangsläufig n weiter paar eckige klammern einsetzen? die kann ich schlecht in einer schleife dazufügen.
Mit Zitat antworten
  #10 (permalink)  
Alt 28-03-2010, 22:56
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von stephan1990 Beitrag anzeigen
wie soll ich denn sagen dass der eine dimension höher springen soll?
Nicht höher, sondern runter.
Zitat:
Für jede weitere Dimension die ich testen will muss ich doch zwangsläufig n weiter paar eckige klammern einsetzen?
Nein, nicht wenn du von der jeweils aktuellen Dimension aus die nächste testest.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 28-03-2010, 22:58
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Nein, nicht wenn du von der jeweils aktuellen Dimension aus die nächste testest.
Und das geht wie? Ich kann dir theoretisch folgen weiß aber leider nicht wie ich das in Quelltext fassen soll.
Mit Zitat antworten
  #12 (permalink)  
Alt 28-03-2010, 23:02
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wo genau liegt denn das Problem?

Du testest in einer Schleife eine Unter-Ebene, und „merkst“ dir dann diese Ebene als zu testende für den nächsten Schleifendurchlauf.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #13 (permalink)  
Alt 28-03-2010, 23:10
stephan1990
 Registrierter Benutzer
Links : Onlinestatus : stephan1990 ist offline
Registriert seit: Mar 2010
Beiträge: 24
stephan1990 befindet sich auf einem aufstrebenden Ast
Standard

und in wiefern soll ich mir das ganze merken?
Mit Zitat antworten
  #14 (permalink)  
Alt 28-03-2010, 23:11
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zum „merken“ von Werten, Referenzen und sonstigem dienen beim Programmieren Variablen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #15 (permalink)  
Alt 28-03-2010, 23:13
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Post

In einer Variablen, z. B. $current

PHP-Code:
$current =& $data;
foreach (
explode("."$path) as $step) {
    if (!isset(
$current[$step])) {
        
$current[$step] = array();
    }
    
$current =& $current[$step];

__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (28-03-2010 um 23:21 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Multidimensionales Array sortieren schlattm PHP Developer Forum 6 24-12-2009 08:54
Multidimensionales Array sortieren! Schanz PHP Developer Forum 1 10-08-2008 17:05
DB & Multidimensionales Array nichtsooft PHP Developer Forum 44 08-03-2007 15:54
Multidimensionales Array in Eindimensionales Array konvertieren reallife PHP Developer Forum 0 30-10-2005 12:13
CHMOD // Multidimensionales Array Killerattacks PHP Developer Forum 3 08-05-2002 19:46

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:41 Uhr.