Autor Zpráva
kajaman
Profil
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
Š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
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
kajaman:
http://cz.php.net/manual/en/language.references.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: