Autor Zpráva
Trululum
Profil *
Zdravim,

<?php
	$test = array();
	$i = 0;
	${'test['.$i.']'}='Is here';
	print_r($test);
?>


vypise Array( )
neviete kde je chyba a ako by sa to dalo vyriesit? Potreboval by som tam dynamicky nahadzat viacej hranatych zatvoriek.
king26
Profil
<?php
$test=array();
for($i=0;$i<=$pocet_prvku_v_poli;$i++) $test[]="nejaka hodnota....";
print_r($test);
?>
Trululum
Profil *
len ja potrebujem na urcite miesto v poli zadat hodnotu
napr

$test[2][4][3][10][7]='bla bla';
AM_
Profil
Trululum:
$test[2][4][3][10][7]='bla bla';
toto je syntakticky správně, zato to v prvním příspěvku nechápu, co má dělat; Možná špatně položená otázka, měl bys říct, co chceš, aby to dělalo, a ne "co to dělá a jak to vyřešit", to pak nevím, jak ti pomoct :)
Trululum
Profil *
no dajme tomu ze mi pride pole s udajmi klucov pre umiestnenie premennej

$umiestniNa = array(2, 4, 3, 10, 7);

a ja potrebujem aby sa do pola $test nieco vlozilo

vysledok : $test[2][4][3][10][7]='bla bla';


$umiestniNa sa bude dynamicky menit

preto som potreboval dynamicky pospajat hranate zatvorky

${'test['.explode('][', $umiestniNa).']'}='bla bla';
Aichi
Profil
eval()
Majkl578
Profil
Aichi:
Ale fuj.

[#5] Trululum
Trochu nechápu, k čemu něco takového je. Tvoje řešení je ale otřesné. :)

$input = array(2, 4, 3, 10, 7);
$test = array();
$tmp = & $test;
for ($i = 0, $count = count($input); $i < $count; $i++) {
	$tmp[$input[$i]] = ($i + 1) === $count ? 'bla bla' : array();
	$tmp = & $tmp[$input[$i]];
}
var_dump($test, $test[2][4][3][10][7]);
Mastodont
Profil
Majkl578:
Noooo ... a nebyl by eval v tomto případě jednodušší?
Majkl578
Profil
Mastodont:
Je to možné.
eval('$test['. implode('][', $input) . ']=\'bla bla\';');

Nicméně, já se snažím eval vyhnout kde to jen jde... Proto "fuj" a delší náhrada.
AM_
Profil
možná by to šlo pomocí referencí a nějakého cyklu:
function nastav(&$pole, $cesta, $hodnota){
  if (count($cesta) > 1){
    $uzel = array_shift($cesta); //precteme aktualni uzel a zbude cesta od nej
    if (!isset($pole[$uzel])) $pole[$uzel] = array(); //osetreni v pripade, ze dany uzel neexistuje
    nastav($pole[$uzel], $cesta, $hodnota); //rekurzivne zavolame pro dalsi pod-pole
  } else {
    $pole[$cesta[0]] = $hodnota;
  }
}

Nezkoušel jsem to, tak je tam možná nějaká hloupá chyba, ale principielně by to mělo fungovat.

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:

0