Arrays formatieren

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

  • Arrays formatieren

    Tach,

    bräuchte mal ein paar Denkanstöße. Ich habe folgendes array:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => Array
                    (
                        [
    0] => u
                        
    [1] => foo
                        
    [2] => bar
                    
    )

                [
    1] => Array
                    (
                        [
    0] => d
                        
    [1] => foo
                    
    )

            )

        [
    1] => Array
            (
            )


    Das Ziel ist es das Array folgendermaßen zu formtieren:
    PHP-Code:
    Array
    (
        [
    u] => Array
            (
                [
    0] =>foo
                
    [1] =>bar
            
    )

        [
    d] => Array
            (
                 [
    0] =>foo
            
    )


    Mit der eigenerstellte Funktion ereiche ich nur ein Teilergebnis.
    PHP-Code:
    Array
    (
        [
    u] => Array
            (
                [
    0] =>foo
                
    [1] =>bar
            
    )

    Ich habe wie es scheint momentan eine Denksperre und komm nicht weiter. Was mache ich falsch?
    PHP-Code:
    function getOptions($options) {
            
    $opt = array();

            foreach (
    $options AS $val) {
                    if (
    is_array($val)) {
                            
    $tmp getOptions($val);
                            
    $tmpKey key($tmp);
                            if (!empty(
    $tmp)) {
                                    
    $opt[$tmpKey] = $tmp[$tmpKey];
                            }
                    } else {
                            if (!
    is_numeric($val)) {
                                    
    $opt[$val] = array();
                                    while (
    next($options)) {
                                            
    $opt[$val][] = pos($options);
                                    }
                                    break;
                            }
                    }
            }
            return 
    $opt;

    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
    PHP Sicherheit
    PHPUnit[1-2]
    Professionelle Softwareentwicklung mit PHP 5
    Professionelle PHP 5-Programmierung

  • #2
    ein (unperformanter) ansatz wäre:
    PHP-Code:
    $a[0][0][0]='u';
    $a[0][0][1]='foo';
    $a[0][0][2]='bar';
    $a[0][1][0]='b';
    $a[0][1][1]='oo';
    $a[0][1][2]='ar';
    print_r($a);

    for(
    $i=0;$i<count($a[0]); $i++)
    {
        for(
    $k=0$k<count($a[0][$i]); $k++)
        {
            if(
    $k>0)
                
    $out[$a[0][$i][0]][]=$a[0][$i][$k];
        }
    }
    print_r($out); 
    Kissolino.com

    Kommentar


    • #3
      Vielen Dank für die Antwort. Die Lösung ist das Schlüsselwort static.
      PHP-Code:
      function getOptions($options) {
              static 
      $opt;

              foreach (
      $options AS $val) {
                      if (
      is_array($val)) {
                              
      $tmp getOptions($val);
                              
      $tmpKey key($tmp);
                              if (!empty(
      $tmp)) {
                                      
      $opt[$tmpKey] = $tmp[$tmpKey];
                              }
                      } else {
                              if (!
      is_numeric($val)) {
                                      
      $opt[$val] = array();
                                      while (
      next($options)) {
                                              
      $opt[$val][] = pos($options);
                                      }
                                      break;
                              }
                      }
              }
              return 
      $opt;

      cheers
      Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
      PHP Sicherheit
      PHPUnit[1-2]
      Professionelle Softwareentwicklung mit PHP 5
      Professionelle PHP 5-Programmierung

      Kommentar

      Lädt...
      X