php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum > Tutorials

Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.02.2008, 22:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard PHP: String in mehrdimensionalen Array umwandeln, vice versa

Hallo,

vor kurzem für einen Kollegen geschrieben, jetzt sogar selbst mal gebraucht:
Ein Skript, das einen String an einem vordefinierten Zeichen aufbricht und so einen mehrdimensionalen Array erzeugt (createArrayByString, string2array sozusagen) oder versucht, darauf zuzugreifen (accessArrayByString).

Praktisches Beispiel:
config.ini
Code:
[path]
classes = library/classes
functions = library/functions
parse_ini_file() mit $process_sections = TRUE erzeugt daraus einen Array
array("path" => array("classes" => "library/classes", "functions" => "library/functions"))

Auf diesen möchte ich in XPath-Manier mit $config->get("path/functions") zugreifen.

Hier die beiden Funktionen:
createArrayByString.php
PHP-Code:
<?php
/**
 * creates an array by splitting a string for key usage on a given separator
 * 
 * @example
 * <code>
 * $string = "one.two.three.four";
 * $separator = ".";
 * 
 * $array = createArrayByString($string, $separator, "standard value");
 * 
 * var_dump($array); // should return array("one" => array("two" => array("three" => array("four" => "standard value"))))
 * </code>
 *
 * @param string $string string to use for keys
 * @param char $separator char used for exploding the string
 * @param mixed $value the string is used for the keys in the new array, this is used for the value
 * @return array
 */
function createArrayByString($string$separator$value NULL)
{
    if (
strlen($string) > 0) {
        
$splitter explode($separator$string);
        
$index array_shift($splitter);
        
$function __FUNCTION__;
        return array(
$index => $function(implode($separator$splitter), $separator$value));
    }
    return 
$value
}
?>
accessArrayByString.php
PHP-Code:
<?php
/**
 * access an array by splitting the given string, using the splitters as array keys
 *
 * @example
 * <code>
 * $array = array("one" => array("two" => array("three" => array("four" => "standard value"))))
 * $string = "one.two.three.four";
 * $separator = ".";
 * $value = accessArrayByString($array, $string, $separator, NULL);
 * var_dump($value); // should return "standard value"; 
 * </code>
 * 
 * @param array $array
 * @param string $string the string splitters will be used as array keys
 * @param char $separator char used to split the array
 * @param mixed $default value that will be returned in case the array has not such keys (as given in the array)
 * @return mixed value, accessed by the keys
 */
function accessArrayByString($array$string$separator$default NULL)
{
    if (!
is_array($array)) {
        return empty(
$string) ? $array $default;
    }
    @list (
$key$rest) = explode($separator$string2);
    
    
$function __FUNCTION__;
    return 
array_key_exists($key$array)
         ? 
$function($array[$key], $rest$separator$default)
         : 
$default;
}
?>
Wie man sieht arbeiten beide rekursiv, die Funktionsnamen können aber ohne weitere Änderungen angepasst werden.

Hier nochmal das zusammengefasste, anschauliche Beispiel:
PHP-Code:
<?php
$string 
"one.two.three.four";
$separator ".";

$array createArrayByString($string$separator"standard value");
$return accessArrayByString($array$string$separator"element not found");

var_dump($array); // should return array("one" => array("two" => array("three" => array("four" => "standard value"))))
var_dump($return); // should return "standard value";
?>
Zergling-new ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.02.2008, 02:24  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

a) Ich zähle grobe geschätze 30 Zeilen Code
b) Ich sehe keine Frage

Was ist das Problem?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 03.02.2008, 10:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard


.. ist ja auch das Tutorial-Forum, da stell ich keine Fragen, sondern Skripte rein, die vielleicht irgendwer mal irgendwann gebrauchen kann
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
php schreibt kein array ins array sondern string fragnicht PHP Tipps 2008 10 19.06.2008 15:03
String bei Zeichen X trennen und in array umwandeln MeisterGlanz PHP Tipps 2006 5 13.09.2006 15:28
Int in String oder Array umwandeln PHP Tipps 2006 9 27.02.2006 15:04
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Assoziatives Array mit String initialisieren PHP Tipps 2006 10 17.01.2006 14:01
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
eindimensionales array in zweidimensionales array umwandeln PHP Tipps 2005-2 6 20.07.2005 16:09
php code als string umwandeln PHP Tipps 2005 8 23.02.2005 18:03
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
String in Array umwandeln PHP Tipps 2004-2 15 24.11.2004 16:53

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php assoziativen array in string, php array to string mehrdimensional, php string to array, array aus string erstellen php, php path to array, php array path, http://www.php.de/tutorials/45432-php-string-mehrdimensionalen-array-umwandeln-vice-versa.html, php explode mehrdimensional, php array aus string erstellen, php string in mehrdimensionales array, php array, php mehrdimensionales array to string, php array to string, php mehrdimensionales array in string, php string in assoziatives array, php string, string to array php, php string in array, php explode assoziatives array, php multidimensional array to string

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.