String/Integer bei einem array_merge

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • onemorenerd
    antwortet
    Original geschrieben von tolwin
    Haste vielleicht nen Tipp worauf genau ich dann in der Funktion achten müsste?
    Darauf, dass sie das gleiche macht wie array_merge() außer eben die "numerischen Strings" gerade nicht als Int sondern String zu behandeln. Wahrscheinlich findest du auf http://php.net/array_merge schon was fertiges oder wenigstens etwas in der Richtung.

    Einen Kommentar schreiben:


  • tolwin
    antwortet
    Original geschrieben von onemorenerd
    Gar nicht, solange du array_merge() verwendest. Schreib dir eine Funktion dafür!
    Haste vielleicht nen Tipp worauf genau ich dann in der Funktion achten müsste?


    Original geschrieben von mrhappiness
    PHP-Code:
    $dats $files $dirs
    ?
    Das geht leider nicht, da er mir dann die doppelten Einträge nicht entfernt

    Danke und Gruß
    Tolwin

    Einen Kommentar schreiben:


  • mrhappiness
    antwortet
    PHP-Code:
    $dats $files $dirs
    ?

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Wie kann ich nun verhindern dass diese Ordnernamen als Integer interpretiert werden.
    Gar nicht, solange du array_merge() verwendest. Schreib dir eine Funktion dafür!

    Einen Kommentar schreiben:


  • tolwin
    hat ein Thema erstellt String/Integer bei einem array_merge.

    String/Integer bei einem array_merge

    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)
    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)) {
        
    $aktverzstr_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); 
Lädt...
X