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

我有一个数组:

$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;

}

}

?>

以上是 如何从用print_r打印的数组的输出创建数组? 的全部内容, 来源链接: utcz.com/qa/401200.html

回到顶部