Array korrekte teilen (explode)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von badloader, 27. August 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 27. August 2010
    Hi,

    ich stehe gerade völlig auf dem Schlauch.

    Ich möchte gerne folgendes:
    PHP:
    $string  'key1:key2:val' ;

    //explode(':', $string); etc

    //result:
    $result  = array(
       
    'key1' => array(
             
    'key2'  =>  'val
       )
    );
    Muss ich da rekursiv arbeien? Ich hab echt kein Plan gerade.
     
  2. 27. August 2010
    AW: Array korrekte teilen (explode)

    PHP:
    explode ( ':' 'key1:key2:val' );
    sollte aber
    PHP:
    array( 'key1' 'key2' 'val' );
    ergeben.

    wenn du aber
    PHP:
    array( 'key1'  => array( 'key2'  =>  'val' ));
    haben willst, kannst dus mal so probieren:
    PHP:
    <? php

    $stack   
    explode ( ':' 'key1:key2:val' );
    $result   = array();
    $pointer  = & $result ;

    for(
    $i  0 $l  count ( $stack ) -  2 $i  $l ; ++ $i ) {
        
    $pointer [ $stack [ $i ]] = array();
        
    $pointer  = & $pointer [ $stack [ $i ]];
    }

    $value  array_pop ( $stack );
    $key    array_pop ( $stack );
    $pointer [ $key ] =  $value ;

    print_r ( $result );
    schau dir mal "json" an. das sollte dir helfen.

    PHP:
    $result  json_decode ( '{ "key1": { "key2": "val" } }' true );
     
  3. 28. August 2010
    AW: Array korrekte teilen (explode)

    JSON kann ich nicht gebrauchen.

    Es geht um sowas:

    Config::set('db:mysql:username', 'r00t');
    Config::set('db:mysql assword', 'pass)

    Das soll dann in einem Array gespeichert werden können:
    Code:
    Array(
     'db' => array(
     'mysql' => array(
     'username' => 'r00t',
     'password' => 'pass'
     )
     )
    )
     
  4. 29. August 2010
    AW: Array korrekte teilen (explode)

    Murdoc hatte schon den richtigen Weg beschrieben! Ich hab das mal in eine Klasse umgeschrieben:

    PHP:
    <? php

    class  Config  {
        protected static 
    $config  = array();
        
        public static function 
    set ( $name $value ) {
            
    $name  explode ( ':' $name );
            
    $last  array_pop ( $name );
            
    $pntr  = & self :: $config ;
            
            foreach(
    $name  as  $k ) {
                if(!isset(
    $pntr [ $k ]))
                    
    $pntr [ $k ] = array();
                    
                
    $pntr  = & $pntr [ $k ];
            }
            
            
    $pntr [ $last ] =  $value ;
        }
        
        public static function 
    get ( $name ) {
            
    $name  explode ( ':' $name );
            
    $last  array_pop ( $name );
            
    $pntr  = & self :: $config ;
            
            foreach(
    $name  as  $k ) {
                if(!isset(
    $pntr [ $k ]))
                    return 
    false ;
                    
                
    $pntr  = & $pntr [ $k ];
            }
            
            if(isset(
    $pntr [ $last ]))
                return 
    $pntr [ $last ];
                
            return 
    false ;
        }
        
        public static function 
    dump () {
            
    var_dump ( self :: $config );
        }
    }

    Config :: set ( 'foo:bar:baz:0' 1 );
    Config :: set ( 'foo:bar:baz:1' 2 );
    Config :: dump ();
    // ausgabe: array(1) { ["foo"]=> array(1) { ["bar"]=> array(1) { ["baz"]=> array(2) { [0]=> int(1) [1]=> int(2) } } } } 
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.