Autor | Zpráva | ||
---|---|---|---|
kajaman Profil |
#1 · Zasláno: 25. 3. 2012, 20:14:14
potřeboval bych poradit s tímto ořiškem :-) mám pole např:
$pole = array( "jedna" => "jedna", "dva" => array( "dva1" => "dvacejedna", "dva2" => "dvacetdva", "dva3" => array( "dva31 => "tricetjedna" ) ), "tri" = "3" ); dále mám pole, které obsahuje cestu k místu, na které potřebuji zapsat nový prvek: $cesta = array("dva","dva3") ; zkoušel jsem něco takového, ale nejde mi to, máte někdo pls řešení? $path = 'pole'; foreach ( $cesta as $item) { $path .= "['" . $item "']"; } $newItemKey = "dva32"; $newItemValue = "dvestetricetdva"; ${$path)[$newItemKey] = $newItemValue; |
||
Nox Profil |
$array = array(/*...*/); $path = array(/*...*/); $current = $array; foreach($path as $key) { if( array_key_exists($key, $current) === true ){ $current = $current[$key]; } else { /* neplatna cesta, nějak si pořeš */ } } var_dump($current); možná budeš chtít použít reference, to už záleží jak/k čemu to chceš |
||
Tori Profil |
#3 · Zasláno: 25. 3. 2012, 20:24:56
Šlo by to přes referenci, např. takto:
$ref = &$pole; while ($tmp = array_shift($cesta)) { $ref = &$ref[$tmp]; } $ref[$newItemKey] = $newItemValue; unset($ref); var_dump($pole); |
||
kajaman Profil |
#4 · Zasláno: 25. 3. 2012, 20:37:51 · Upravil/a: kajaman
Nox:
to není dobré řešení, já na konci potřebuji mít takovéhle pole: $pole = array( "jedna" => "jedna", "dva" => array( "dva1" => "dvacejedna", "dva2" => "dvacetdva", "dva3" => array( "dva31 => "tricetjedna" "dva32" => "dvestetricetdva" ) ), "tri" = "3" ); Tori: tohle funguje, moc děkuju! :-) |
||
Nox Profil |
#5 · Zasláno: 25. 3. 2012, 20:50:27
|
||
Časová prodleva: 12 let
|
0