【问题标题】:Coverting String to PHP Associative Array将字符串转换为 PHP 关联数组
【发布时间】:2013-04-24 13:06:41
【问题描述】:

如何转换这个字符串

$str = "array('3'=>'wwm','1'=>'wom')";

到真正的php关联数组...

【问题讨论】:

  • 你是怎么得到这样一个字符串的?
  • 我正在将此字符串发送到数据库...现在我想在从数据库检索后使用它
  • 不要那样做。请改用ch2.php.net/serialize

标签: php arrays string converter associative-array


【解决方案1】:

这很简单,但真的不安全

$str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')";
eval("\$array = $str;");

你永远不应该使用这种方法,还有其他方法可以做到这一点:serialize()unserialize()

【讨论】:

  • 序列化是更好的选择
  • 解析错误:语法错误,/home/user/test.php(5) 中的意外 $end : eval()'d code on line 1
  • 已修复,第一个 $ 符号应使用 \ 转义
  • 未修复。仍然得到:解析错误:语法错误,/home/user/test.php(5) 中的意外 $end : eval()'d code on line 1 – hek2mgl 11
  • 是的,在您添加到; 之后,它现在可以工作了。请注意,; 是必不可少的
【解决方案2】:

您可以为此使用eval() 函数:

$str = "array('3'=>'wwm','1'=>'wom')";

eval("\$a=$str;");

var_dump($a);

但是,在您的代码中使用eval() 被认为是有风险的,您不应使用它。尝试改用serialize()unserialize()

【讨论】:

    【解决方案3】:

    首先。不要使用评估。这是邪恶的! http://af-design.com/blog/2010/10/20/phps-eval-is-evil/

    其次。简单的解决方案不是使用此字符串,而是在将其放入数据库时​​使用“序列化”并在将其拉出时取消序列化。您正在存储一种非常不寻常的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-10
      • 2019-06-26
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2020-11-21
      • 2016-07-21
      相关资源
      最近更新 更多