当前位置: 首页 > 面试题库 >

如何从用print_r打印的数组的输出创建数组?

苏鸿才
2023-03-14
问题内容

我有一个数组:

$a = array('foo' => 'fooMe');

而且我会:

print_r($a);

打印:

Array ( [foo] => printme )

有功能吗,所以在做的时候:

needed_function('    Array ( [foo] => printme )');

我会把阵列取array('foo' => 'fooMe');回来吗?


问题答案:

我实际上写了一个将“字符串数组”解析为实际数组的函数。显然,它有点笨拙,但可以在我的测试用例上使用。这是http://codepad.org/idlXdij3上功能原型的链接。

对于那些不想单击链接的人,我也会在内联发布代码:

<?php
     /**
      * @author ninetwozero
      */
?>
<?php
    //The array we begin with
    $start_array = array('foo' => 'bar', 'bar' => 'foo', 'foobar' => 'barfoo');

    //Convert the array to a string
    $array_string = print_r($start_array, true);

    //Get the new array
    $end_array = text_to_array($array_string);

    //Output the array!
    print_r($end_array);

    function text_to_array($str) {

        //Initialize arrays
        $keys = array();
        $values = array();
        $output = array();

        //Is it an array?
        if( substr($str, 0, 5) == 'Array' ) {

            //Let's parse it (hopefully it won't clash)
            $array_contents = substr($str, 7, -2);
            $array_contents = str_replace(array('[', ']', '=>'), array('#!#', '#?#', ''), $array_contents);
            $array_fields = explode("#!#", $array_contents);

            //For each array-field, we need to explode on the delimiters I've set and make it look funny.
            for($i = 0; $i < count($array_fields); $i++ ) {

                //First run is glitched, so let's pass on that one.
                if( $i != 0 ) {

                    $bits = explode('#?#', $array_fields[$i]);
                    if( $bits[0] != '' ) $output[$bits[0]] = $bits[1];

                }
            }

            //Return the output.
            return $output;

        } else {

            //Duh, not an array.
            echo 'The given parameter is not an array.';
            return null;
        }

    }
?>


 类似资料:
  • 问题内容: 假设我有一些无法访问原始PHP创建的数组的源输出: 现在,我想输入该数据,并使算法重新创建它正在打印的原始数组,以便可以将其用于自己的应用程序。 目前,我正在考虑a 和regex语句来提取数据并将其适当放置。在我进一步介绍之前,有没有一种更简单的方法,通过已经编写的代码或php插件为我准备好了呢? 问题答案: 不是我的代码,请在注释中找到:print_r’Matt ‘是所有者

  • 本文向大家介绍PHP中的print_r 与 var_dump 输出数组,包括了PHP中的print_r 与 var_dump 输出数组的使用技巧和注意事项,需要的朋友参考一下 print_r() 和 var_dump() 函数可以打印输出整个数组内容及结构。 print_r() 利用 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素。注意 print_r() 函数不

  • 我想使用简单的Jdbc插入类和执行批处理方法 http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/simple/SimpleJdbcInsert.html 所以我需要传递一个< code>Map数组 这是错误:无法创建 Map 的通用数组

  • 问题内容: 我想使用simpleJdbcInsert类和executeBatch方法 http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/simple/SimpleJdbcInsert.html 所以我需要传递一个as参数数组。如何创建这样的数组?我试过的是 错误:无法创建通用数组 A

  • 问题内容: 目前,每当我需要从数组创建流时,我都会 有一些直接的方法可以从数组创建流吗? 问题答案: 您可以使用Arrays.stream Eg 您也可以使用@fge所提到的,它看起来像 但是note 将返回,而如果您传递一个type数组,则将返回。因此,简而言之,您可以观察两种方法之间的区别,例如 将原始数组传递给时,将调用以下代码 当您将原始数组传递给以下代码时,将被调用 因此,您得到不同的结

  • 目前,每当我需要从数组创建流时,我都会