4-dimensionales array in numerisches umwandeln?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 4-dimensionales array in numerisches umwandeln?

    moin,

    ich hab ein problem bei umwandeln eines 4-dimensionalen assoziativen arrays in ein numerisches:

    hier erstmal der bisherige code zum erstellen des arrays:

    PHP Code:

    error_reporting
    (E_ALL);
    ini_set('display_errors'true);
    ini_set('html_errors'false);

    $hauptordner realpath(dirname(__FILE__)) . '/img'//Realpath um einen direkten Pfad zu bekommen
    $haupt_res opendir($hauptordner); // Mein Fehler, hab in der Eile nicht richtig gelesen. Opendir wird neuerdings nichtmehr automatisch gecastet.

    while ( false !== ($clientordner readdir $haupt_res )) ) {
        
    $pfad $hauptordner '/' $clientordner;
        if (
    $clientordner != "." && $clientordner != ".." && is_dir($pfad))  {
            
    $client_res opendir($pfad);
            while ( 
    false !== ($typordner readdir $client_res )) ) {
                    
    $pfad $hauptordner '/' $clientordner '/' $typordner;
                if (
    $typordner != "." && $typordner != ".." && is_dir($pfad)) {
                    
    $typ_res opendir($pfad);
                        
                while ( 
    false !== ($kamordner readdir $typ_res )))
                 {
                    
    $pfad $hauptordner '/' $clientordner '/' $typordner '/' $kamordner;
                            if (
    $kamordner != "." && $kamordner != ".." && is_dir($pfad)) {
                            
    $kam_res opendir($pfad);
                                    
                    while ( 
    false !== ($pic readdir $kam_res )) ) {
                        if (
    $pic != "." && $pic != "..")
                        {
                        
    //ggf per pathinfo($pfad, PATHINFO_EXTENSION) Dateityp auslesen und dann per if ect auf gewisse Dateiendungen einschränken  
                        
    $bilder $clientordner ] [ $typordner ][ $kamordner ]  [] = $pfad '/' $pic ;
                        }
                    }
                }
            }
        }
    }
    }



    und hier mein versuch das ganze in nen numerisches array umzuwandeln:

    PHP Code:
    $bilder_numerisch = Array();
    $i 0;
    foreach (
    $bilder as $value) {
        
    $bilder_num[$i] = $value;
        
    foreach (
    $bilder_num[$i] as $value) {

        
    $bilder_num2[$i][$i] = $value;
    foreach (
    $bilder_num2[$i][$i] as $value) {

        
    $bilder_numerisch[$i][$i][] = $value;

    }
    }
    $i++;


    leider funktioniert das nicht.


    komme da einfach nicht weiter. wär super wenn mir da jemand helfen könnte.
    nebenbei, ich bin absolter php anfänger und wäre für ne einfach verständliche antwort/code sehr dankbar.

    noch ne zusatzfrage:
    wie müßte ich dass denn machen wenn ich die länge der einzelen dimensionen des arrays wissen will?? also zumbeispiel die länge der dritten dimension??

  • #2
    Re: 4-dimensionales array in numerisches umwandeln?

    Original geschrieben von herrnilsson
    wie müßte ich dass denn machen wenn ich die länge der einzelen dimensionen des arrays wissen will?? also zumbeispiel die länge der dritten dimension??
    PHP Code:
    count($dein_array['erste']['zweite']['dritteDimension']) 
    Flachklopfen eines 3-dimensionalen Arrays geht so:
    PHP Code:
    $numerisch = array();

    foreach (
    $array as $dim_1_value) {
        if (
    is_array($dim_1_value)) {
            foreach (
    $dim_1_value as $dim_2_value) {
                if (
    is_array($dim_2_value)) {
                    foreach (
    $dim_2_value as $dim_3_value) {
                        
    $numerisch[] = $dim_3_value;
                    }
                } else {
                    
    $numerisch[] = $dim_2_value;
                }
            }
        } else {
            
    $numerisch[] = $dim_1_value;
        }

    Das ist die intuitive Lösung. Funktioniert und ist auch am leichtesten zu verstehen. Aber wenn du wirklich was lernen möchtest, dann schau dich mal auf http://php.net/array_values um.

    Comment


    • #3
      danke erstmal für die antwort,..

      aber das is nicht so wirklich dass was ich erreichen wollte,..

      ich muss am ende ein ergebnis haben, womit ich z.b. nen

      PHP Code:
      echo $bilder_numerisch[3] [2] [1] [0]; 

      auslesen kann,..

      da er mir leider bei:

      PHP Code:
      echo $bilder[3] [2] [1] [0]; 
      sagt:

      Undefined offset: 3

      , dachte ich ich musses vielleicht in nen numerisches array umwandeln, was ja leider nicht wirklich geklappt hat,...

      Comment


      • #4
        Mach mal ein
        PHP Code:
        echo '<pre>'.print_r($bilder,1).'</pre>'
        Dann wird dir klar, wie dein Array überhaupt aussieht.

        Comment


        • #5
          die ausgabe von print_r($bilder) sieht so aus:

          PHP Code:
          Array
          (
              [
          client_1] => Array
                  (
                      [
          2005] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2005/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_1/2005/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2005/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2006] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2006/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_1/2006/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2006/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2007] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2007/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_1/2007/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_1/2007/internet/bla_web_template.jpg
                                  
          )

                          )

                  )

              [
          client_2] => Array
                  (
                      [
          2005] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2005/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_2/2005/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2005/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2006] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2006/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_2/2006/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2006/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2007] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2007/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_2/2007/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_2/2007/internet/bla_web_template.jpg
                                  
          )

                          )

                  )

              [
          client_3] => Array
                  (
                      [
          2005] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2005/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_3/2005/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2005/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2006] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2006/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_3/2006/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2006/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2007] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2007/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_3/2007/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_3/2007/internet/bla_web_template.jpg
                                  
          )

                          )

                  )

              [
          client_4] => Array
                  (
                      [
          2005] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2005/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_4/2005/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2005/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2006] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2006/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_4/2006/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2006/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2007] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2007/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_4/2007/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_4/2007/internet/bla_web_template.jpg
                                  
          )

                          )

                  )

              [
          client_5] => Array
                  (
                      [
          2005] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2005/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_5/2005/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2005/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2006] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2006/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_5/2006/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2006/internet/bla_web_template.jpg
                                  
          )

                          )

                      [
          2007] => Array
                          (
                              [print] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2007/print/bla_big_1.jpg
                                      
          [1] => /home/www/web109/html/test/img/client_5/2007/print/bla_print_thumb_1.jpg
                                  
          )

                              [
          internet] => Array
                                  (
                                      [
          0] => /home/www/web109/html/test/img/client_5/2007/internet/bla_web_template.jpg
                                  
          )

                          )

                  )


          aber wie wandel ich das nur in nen numerisches array um? oder gibts noch nen anderen weg, dass ich das array so auslesen kann:

          PHP Code:
          echo $bilder[4] [2] [1] [3]; 
          ???

          Comment


          • #6
            Natürlich gibt es noch eine andere Möglichkeit. Nutze einfach die bestehenden String-Indizes.
            PHP Code:
            echo $bilder['client_1']['2005']['print'][0]; 
            http://php.net/manual/en/language.types.array.php

            Comment


            • #7
              das geht leider nicht..!

              ich brauche auf jeden fall nen numerisches...

              hmm,..kannst du vielleicht kurz posten, wie du das 4-dimensionale array zu nem numerishen array umwandeln würdest??

              Comment


              • #8
                Original geschrieben von herrnilsson
                das geht leider nicht..!

                ich brauche auf jeden fall nen numerisches...
                Nein, brauchst du nicht. Dir fehlen nur die Grundlagen, um das einzusehen.
                PHP Code:
                function dump($array) {
                    foreach (
                $array as $value) {
                        if (
                is_array($valuedump($value);
                        else echo 
                $value;
                    }

                In Zukunft bitte etwas mehr Eigeninitiative!

                Comment

                Working...
                X