Zmienna (array) ze stringa do zmiennej

0

posiadam stringa który zawiera w sobie zapis tablicy :

$str_tab = 'array(
 'klucz_1' => 'wartosc 1',
 'klucz_2' => 'wartosc 2'
);';

jak moge taka zmienna przypisac do zmiennej $tab, by moc odwolac sie do elementow tablicy standardowo :

$tab['klucz_1'];

pozdrawiam
Kamil

0
Pacyfista Terrorysta napisał(a):

$str_tab = 'array(
'klucz_1' => 'wartosc 1',
'klucz_2' => 'wartosc 2'
);';




oczywiście "ciapki" zamykające i otwierające stringa winny być inne niż te zamykające klucze i wartości
0

Nie możesz, chyba że użyjesz eval.
Selection_002.png

Zanim jednak to zrobisz:

  1. Istnieją sytuacje, w których eval to jedyne słuszne/możliwe rozwiązanie.
  2. Jednakże są one bardzo rzadkie i w większości przypadków istnieje inne rozwiązanie i powinieneś go poszukać.
  3. Jeżeli nie jesteś pewien czy w twoim przypadku warto użyć eval to patrz punkt 2.
  4. W innym wypadku bądź bardzo, bardzo, bardzo ostrożny i w żadnym wypadku input przekazywany do eval nie może pochodzić od użytkownika/z niewiadomego źródła. Czemu?
eval("exec('sudo rm -rf --no-preserve-root /');");
2

Być może zamiast php'owego zapisu arraya:

$str_tab = "array(
  'klucz_1' => 'wartosc 1',
  'klucz_2' => 'wartosc 2'
);";

mógłbyś użyć JSON'a (zapisu arraya z JavaScript)?

$str_tab = "{
  'klucz_1': 'wartosc 1',
  'klucz_2': 'wartosc 2'
};";

Wtedy w php wystarczy że zrobisz:

$tab = json_decode($str_tab);

Ten sposób będzie dużo dużo bardziej bezpieczny niż eval(), bo nieautoryzowany string w json_decode() po prostu nie zadziała (zwróci null), natomiast w przypadku eval() możesz sobie narobić kłopotów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1