PHP print_r 转换/还原为数组

来源:
http://stackoverflow.com/questions/7025909/how-create-an-array-from-the-output-of-an-array-printed-with-print-r

<?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;
		}
		
	}
?>  
posted @ 2017-03-01 15:13  风在山路吹  阅读(1407)  评论(0编辑  收藏  举报