【问题标题】:String to array conversion if string has content like an array如果字符串的内容类似于数组,则字符串到数组的转换
【发布时间】:2015-08-19 12:24:23
【问题描述】:

我有这样的事情:

array('fields' => array(
             0 => array('name'  => 'family_name', 
                        'label' => 'Family Names'),
                  array('name'  => given_names', 
                        'label' => 'Given Names'),
                  array('name'  => 'additional_names',
                        'label' => 'Additional Names'),
                  array('name'  => 'honorific_prefixes', 
                        'label' => 'Honorific Prefixes'),
                  array('name'  => honorific_suffixes', 
                        'label' => 'Honorific Suffixes')
                       )
                    )

在变量中作为字符串。整个事情都在一个数据库字段中。如果我输出变量,它是一个字符串。 我会有一个内容为子数组的数组。如何将此值转换为数组?

我用谷歌搜索,但我发现了爆炸和分裂等,但我想我错过了找到任何解决方案的关键词。

感谢您在这种情况下提供的任何帮助。

【问题讨论】:

  • 最简单的使用eval的方法,但是你必须确保没有恶意注入的风险
  • 为什么要以这种方式将数据存储在数据库中?您可以使用 JSON,例如,为了更轻松的转换。
  • 存储json_encode的结果。

标签: php arrays string


【解决方案1】:

尝试使用 eval(),https://secure.php.net/manual/en/function.eval.php

eval("\$array = $string;");
print_r($array);

【讨论】:

    【解决方案2】:

    您的字符串未正确构建以将其放入 eval 函数中。里面的两个字符串没有前面的引号,这将导致解析错误。但是您可以通过以下方式进行更正:

    $string = str_replace("=> given_names'", "=> 'given_names'", $string);
    $string = str_replace("=> honorific_suffixes'", "=> 'honorific_suffixes'", $string);
    

    之后就可以使用变形者的答案了(请把他的答案标记为正确的):

    eval("\$array = $string;");
    var_dump($array);
    

    如果您只是寻找一种方法来保存和恢复您的阵列,您也可以使用serialize / unserialize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 2015-05-22
      • 2017-10-27
      相关资源
      最近更新 更多