我实际上写了一个将“字符串数组”解析为实际数组的函数。显然,它有点笨拙,但可以在我的测试用例上使用。这是http://prepad.org/idlXdij3上功能原型的链接。
对于那些不想单击链接的人,我也会在内联发布代码:
<?php ?><?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; } }?>


