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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
04.08.2005, 22:45:58
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
Array konvertieren
Moin,
ich hab's mal wieder mit Arrays. Ich habe ein Array:
"1",
"1", "2",
"1", "2", "3a",
"1", "2", "3b",
"1", "3", "1",
"1", "3", "2", "3"
"2", "1", "1",
"2", "2", "1".
Was ich daraus brauche:
$newArray
['1'],
___['1']['2'],
______['1']['2']['3a'],
______['1']['2']['3b'],
______['1']['3']['1'],
______['1']['3']['2']['3'],
______['2']['1']['1'],
______['2']['2']['1']
(Die '_' sind nur optisches Einrücken)
Das ganze kann natürlich bis zu n Ebenen runtergehen. Wenn möglich, als assoziatives Array.
Hat wer einen heißen Tip für eine rekursive Routine?
Thx, Marilu
Geändert von Marilu (05.08.2005 um 06:50:58 Uhr)
|
05.08.2005, 15:30:42
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Array konvertieren
Ich verstehe dein System, mit dem du das Array bilden möchtest, nicht wirklich. Kannst du das nochmal genauer beschreiben?
Geändert von xabbuh (05.08.2005 um 15:30:58 Uhr)
|
05.08.2005, 15:42:26
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: Array konvertieren
Ich könnte eine Lösungsidee haben. Hatte mal ein ähnliches Problem.
Woher weißt Du denn aber, ob ein Wert ein Wert oder ein weiteres Array mit Werten ist? Ist das von der tiefe der Ebene abhängig?
Vielleicht solltest Du Dir einfach was anderes ausdenken, macht Dir die Arbeit sicher einfacher. ;)
|
05.08.2005, 21:17:19
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Array konvertieren
Zitat:
Zitat von c4
Ich könnte eine Lösungsidee haben.
|
Das habe ich doch gehofft :-)))
@xabbuh, c4: Ich versuche mal, die Grundproblematik zu erläutern. Ich habe eine Tabelle, in der ich Verzeichnisstrukturen auf einem unserer Fileserver ablege. Also in der Form \\Server\Dir1\Dir2\Dir3 ....
Diese Einträge zerhacke ich über explode() ( scnr :-)))) in Arrays. Ich habe jetzt natürlich für jeden Verzeichniseintrag ein Subarray; was ich jedoch möchte, ist ein mehrdimensionales geschachteltes Array - egal, ob numerisch oder assoziativ - das mir die Verzeichnisstruktur abbildet. Etwas deutlicher? Wahrscheinlich nicht :-(((
HIA, Marilu
(@c4: das heißt Hope In Advance)
|
06.08.2005, 08:55:54
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Array konvertieren
Ich glaube, ich verstehe, was du möchtest. Probier es doch mal so:
PHP-Code:
<?php
function PathToArray($path, $pos, $array)
{
if(!array_key_exists($path[$pos], $array)) {
$array[$path[$pos]] = array(
$path[$pos + 1] => array()
);
} else if(!in_array($path[$pos + 1], $array[$path[$ppos]])) {
$array[$path[$pos]][] = $path[$pos + 1];
}
if(++$pos < count($path))
$array[$path[$pos]] = PathToArray($path, $pos, $array[$path[$pos]]);
return $array;
}
$path = explode('/', 'Server/Dir1/Dir2/Dir3');
$array = array();
$array = PathToArray($path, 0, $array);
?>
Geändert von xabbuh (06.08.2005 um 21:44:33 Uhr)
|
06.08.2005, 09:04:50
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Array konvertieren
Eigentlich habe ich oben ja Mist geschrieben. Es muss, denke ich, so aussehen:
$newArray
['1'],
___['2'],
______['3a'],
______['3b'],
___['3']
______['1'],
______['2']
_________['3'],
['2']
___['1']
______['1'],
___['2']
______['1']
@c4:
> Woher weißt Du denn aber, ob ein Wert ein Wert oder ein weiteres Array mit Werten ist? Ist das von der tiefe der Ebene abhängig?
Nur in dem jeweils letzten Element steht ein Wert drin (also hier in 3a, 3b, 1, 3, 1, 1).
Geändert von Marilu (06.08.2005 um 13:48:11 Uhr)
|
06.08.2005, 09:57:43
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Array konvertieren
@xabbuh
Der Ansatz sieht gut aus, aber es hängt noch. Ich habe Deine Funktion so implementiert:
PHP-Code:
$aPath = array();
while ($row = mysql_fetch_array($result)) {
$aPath0 = explode("\\", $row['Path']);
array_push($aPath, $aPath0);
}
foreach ( $aPath as $path) {
$array = array();
PathToArray($path, 0, $array); // kein Rückgabewert?
array_push($aPath, $array);
print_a($array); // Gibt das Array strukturiert aus; man kann auch print_r() nehmen
}
Die Arrays sind leer, und es kommen etliche Notice / Warning...
Du siehst sicherlich sofort, wo mein Denkfehler ist...
|
06.08.2005, 13:26:52
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Array konvertieren
PHP-Code:
} else if(!in_array($path[$pos + 1], $array[$path[$ppos]])) {
Ein p zuviel, hängt aber immer noch.
|
06.08.2005, 21:45:28
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Array konvertieren
Ich habe meine Funktion noch einmal in Richtung Verarbeitung des Rückgabewertes überarbeitet.
|
07.08.2005, 08:41:51
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Array konvertieren
Irgendwo klemmts noch. Hier ein paar Meldungen und das erstellte Array:
PHP-Code:
Notice: Undefined index: Dir1 in listtree.php on line 109
Warning: array_key_exists(): The second argument should be either an array or an object in listtree.php on line 100
Notice: Undefined index: Dir2 in listtree.php on line 109
Warning: array_key_exists(): The second argument should be either an array or an object in listtree.php on line 100
Notice: Undefined index: Dir3 in listtree.php on line 109
Warning: array_key_exists(): The second argument should be either an array or an object in listtree.php on line 100
Notice: Undefined offset: 4 in listtree.php on line 102
Array
(
[Server] => Array
(
[Dir1] => Array
(
)
)
[Dir1] => Array
(
[Dir1] => Array
(
[Dir2] => Array
(
)
)
[Dir2] => Array
(
[Dir2] => Array
(
[Dir3] => Array
(
)
)
[Dir3] => Array
(
[Dir3] => Array
(
[] => Array
(
)
)
)
)
)
}
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:27:54 Uhr.
|