Zmienna (array) ze stringa do zmiennej

Zmienna (array) ze stringa do zmiennej
0

posiadam stringa który zawiera w sobie zapis tablicy :

Kopiuj
$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'
);';

Kopiuj



oczywiście "ciapki" zamykające i otwierające stringa winny być inne niż te zamykające klucze i wartości
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:12 miesięcy
  • Postów:1788
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?
Kopiuj
eval("exec('sudo rm -rf --no-preserve-root /');");
edytowany 1x, ostatnio: Desu
SG
Ja w pewnym momencie w ogóle wyparłem ze świadomości istnienie funkcji eval() i każdemu innemu też to zalecam. Te 4 punkty które podałeś powinny być wykładnią zarówno dla juniora jak i bardzo doświadczonego deva. Co pokazuje, że czas jaki się poświęca na zastosowanie pełnej ostrożności w stosunku do eval lepiej poświęcić na poszukiwanie innego rozwiązania.
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:24 minuty
  • Lokalizacja:Koszalin
  • Postów:10094
2

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

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

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

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

Wtedy w php wystarczy że zrobisz:

Kopiuj
$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.

edytowany 2x, ostatnio: Riddle

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.