Hallo Forum,
ich habe ein problem mit der Zusammenführung zweier Arrays.
Es sind beides Hashtables die aus einem Verzeichnispfad erstellten werden
d.h. der letzte ordner wird als key verwendet und diesem als value der
komplette pfad zugewiesen. Hier ein Beispiel:
/var/opt/data/www/docs/ordner1/unterordner1/ [unterordner1]
/var/opt/data/www/docs/ordner1/unterordner2/ [unterordner2]
usw...
Wenn ich mir die Arrays mit print_r ausgeben lassen, ist die Zuweisung
auch immer exakt wie gewünscht. Auch wenn der Ordnername eine Zahl
ist, z.B. 2005
/var/opt/data/www/docs/ordner1/ordner3/ordner7/2005/ [2005]
Danach werden die beiden Arrays zu einem kompletten gemerget.
Nach der Zusammenführung wandelt php aber die Zahlen (zuvor ja in String Form)
in einen Integer um und beginnt bei 0 bis xx. Das sieht dann etwa so aus:
/var/opt/data/www/docs/ordner1/unterordner1/ [unterordner1]
/var/opt/data/www/docs/ordner1/unterordner2/ [unterordner2]
/var/opt/data/www/docs/ordner1/ordner3/ordner7/2005/ [0]
/var/opt/data/www/docs/ordner5/ordner11/ordner2/2004/ [1]
usw.
Wie kann ich nun verhindern dass diese Ordnernamen als Integer interpretiert werden.
Habe es schon mit casten bei der ursprünglichen Arrayerstelltung versucht - leider ohne Erfolg.
Hat jemand eine Idee.
Hier noch ein Kurzer Ausschnitt aus dem Quellcode (stark verkürzt)
ich habe ein problem mit der Zusammenführung zweier Arrays.
Es sind beides Hashtables die aus einem Verzeichnispfad erstellten werden
d.h. der letzte ordner wird als key verwendet und diesem als value der
komplette pfad zugewiesen. Hier ein Beispiel:
/var/opt/data/www/docs/ordner1/unterordner1/ [unterordner1]
/var/opt/data/www/docs/ordner1/unterordner2/ [unterordner2]
usw...
Wenn ich mir die Arrays mit print_r ausgeben lassen, ist die Zuweisung
auch immer exakt wie gewünscht. Auch wenn der Ordnername eine Zahl
ist, z.B. 2005
/var/opt/data/www/docs/ordner1/ordner3/ordner7/2005/ [2005]
Danach werden die beiden Arrays zu einem kompletten gemerget.
Nach der Zusammenführung wandelt php aber die Zahlen (zuvor ja in String Form)
in einen Integer um und beginnt bei 0 bis xx. Das sieht dann etwa so aus:
/var/opt/data/www/docs/ordner1/unterordner1/ [unterordner1]
/var/opt/data/www/docs/ordner1/unterordner2/ [unterordner2]
/var/opt/data/www/docs/ordner1/ordner3/ordner7/2005/ [0]
/var/opt/data/www/docs/ordner5/ordner11/ordner2/2004/ [1]
usw.
Wie kann ich nun verhindern dass diese Ordnernamen als Integer interpretiert werden.
Habe es schon mit casten bei der ursprünglichen Arrayerstelltung versucht - leider ohne Erfolg.
Hat jemand eine Idee.
Hier noch ein Kurzer Ausschnitt aus dem Quellcode (stark verkürzt)
PHP-Code:
if (!isset($dir)) $dir = '.';
//$path = "/data/www/pvk/docs";
$path = realpath("$dir");
if (is_file($path)) {
(string)$dir = dirname($path);
$filename = $path;
}
else {
$dir = $path;
$filename = "";
}
$handle=@opendir($dir);
if(!$handle) {
echo "Das Verzeichnis existiert nicht.<br>";
}
if ($handle && empty($filename)) {
$aktverz= str_replace ($WEBTREE,"",$dir);
$files = array();
$dirs = array();
while (false !== ($file = readdir ($handle))) {
$realfile = realpath("$dir/$file");
if( is_dir($realfile) ) {
$dirs[(string)$file]=$realfile;
}
elseif (is_file($realfile)) {
$files[(string)$file]=$realfile; // Dateien hier nicht lesen
}
}
closedir($handle);
ksort ($dirs);
ksort ($files);
$dats = array_merge ($dirs, $files);
Kommentar