| 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: 14 let
|
|||
0