2015-03-13 63 views
0

我將數組以字符串形式存儲在數據庫中供以後檢索: 數組的值恰好是filter_val調用的參數。用於陣列創建的Eval備選

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

我知道我可以使用

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

爲傳遞給filter_val準備這個值,但是否有任何其他方式做到這一點?

This related post(雖然優秀)沒有處理我的確切問題。

+5

將它存儲爲'json_encode'字符串? – 2015-03-13 16:18:30

+1

或序列化它 – 2015-03-13 16:18:57

+0

是的,如果你打算把它放在你的代碼的領域之外,那麼就把它存儲起來,保存數組的信息,但沒有數據結構的概念,你可以輕鬆地重新創建。我也會爲JSON投票。 – yoshiwaan 2015-03-13 16:21:15

回答

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

出於某種原因,我很難做到這一點,直到我意識到它會像魅力一樣工作。 :) – 2015-03-13 17:25:27