如何创建一个从印有print_r的一个阵列的输出数组? [英] How create an array from the output of an array printed with print_r?

查看:250
本文介绍了如何创建一个从印有print_r的一个阵列的输出数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组:

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

和我做的:

print_r($a);

它打印:

Array ( [foo] => printme )

是否有一个功能,所以在做的时候:

Is there a function, so when doing:

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

我会得到数组阵列('富'=>'fooMe');

推荐答案

其实我写的解析一个弦阵为实际的数组的函数。显然,这是有点哈克和诸如此类的东西,但它的作品在我的测试用例。下面是在 HTTP到正常运行的原型链接://$c$cpad.org/idlXdij3

I actually wrote a function that parses a "stringed array" into an actual array. Obviously, it's somewhat hacky and whatnot, but it works on my testcase. Here's a link to a functioning prototype at http://codepad.org/idlXdij3.

我会后的code直列也为那些人不喜欢点击链接:

I'll post the code inline too, for those people that don't feel like clicking on the link:

<?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;
        }

    }
?>

这篇关于如何创建一个从印有print_r的一个阵列的输出数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆