Autor | Zpráva | ||
---|---|---|---|
Trululum Profil * |
#1 · Zasláno: 25. 10. 2009, 00:02:06
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 |
#2 · Zasláno: 25. 10. 2009, 00:32:06
<?php $test=array(); for($i=0;$i<=$pocet_prvku_v_poli;$i++) $test[]="nejaka hodnota...."; print_r($test); ?> |
||
Trululum Profil * |
#3 · Zasláno: 25. 10. 2009, 01:49:05
len ja potrebujem na urcite miesto v poli zadat hodnotu
napr $test[2][4][3][10][7]='bla bla'; |
||
AM_ Profil |
#4 · Zasláno: 25. 10. 2009, 12:23:00
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 * |
#5 · Zasláno: 25. 10. 2009, 13:16:36
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 |
#6 · Zasláno: 26. 10. 2009, 13:45:57
|
||
Majkl578 Profil |
#7 · Zasláno: 26. 10. 2009, 15:08:07
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 |
#8 · Zasláno: 26. 10. 2009, 15:15:18
Majkl578:
Noooo ... a nebyl by eval v tomto případě jednodušší? |
||
Majkl578 Profil |
#9 · Zasláno: 26. 10. 2009, 15:21:14
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 |
#10 · Zasláno: 26. 10. 2009, 20:51:52
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. |
||
Časová prodleva: 14 let
|
0