2015-03-13 3 views
0

Я храню массив в виде строки в базе данных для последующего поиска: Значение массива является параметром для вызова filter_val.Eval альтернативы для создания массива

$str = 'array("options" => array("min_range" => 4))'; 

Я знаю, что могу использовать

eval('$options = ' . $str . ';'); 

подготовить это значение для перехода к filter_val, но есть ли другой способ сделать это?

This related post (пока отлично) не справился с моей точной проблемой.

+5

Сохраните его как строку 'json_encode'? –

+1

Или сериализуйте его –

+0

Да, если вы собираетесь вывести его за пределы своего кода, просто сохраните его таким образом, чтобы хранить информацию о массиве, но без концепции структуры данных, которую вы можете легко воссоздать. Я бы тоже проголосовал за JSON. – yoshiwaan

ответ

3

Я бы не использовал eval(), чтобы ваша строка была функциональной. Например, функция evalmay be disallowed on some hosts, поэтому ваше приложение не будет работать.

Более подходящим способом было бы сохранить ваши параметры в строке json_encode()'d и декодировать, когда вам нужно.

$options = json_decode($options_from_db); 

или John Conde mentions, you can serialise it.

+1

По какой-то причине я был стойким к этому, пока не понял, что это будет работать как шарм. :) –

Смежные вопросы