Make the loop and variable variables into a function

Hi,

How can I make the code below into a function?

# split the string by string on boundaries formed by the string delimiter will split the value into an array like the example below,
# Array
# (
#     [0] => pg_cat_id=1
#     [1] => tmp_id=4
#     [2] => parent_id=2
# )
$array_parent = explode("&", $string);
//print_r($array_parent);

# now loop the array.
for($i = 0; $i < count($array_parent); $i++)
{	
	# split the array into smaller arrays with the string delimiter, like the example below,
	# 	Array
	#	(
	#		[0] => pg_cat_id
	#		[1] => 1
	#	)
	#	Array
	#	(
	#		[0] => tmp_id
	#		[1] => 4
	#	)
	#	Array
	#	(
	#		[0] => parent_id
	#		[1] => 2
	#	)
	$array_child = explode("=", $array_parent[$i]);
	//print_r($array_child);
	
	# loop each of the array.
	for($a = 0; $a < count($array_child); $a++)
	{	
		# get the first value in each array and store it in a variable.
		$v = $array_child[0];
		
		# make the variable variable (sometimes it is convenient to be able to have variable variable names. 
		# that is, a variable name which can be set and used dynamically. a variable variable takes the value 
		# of a variable and treats that as the name of a variable). 
		${$v} = $array_child[1];
	}
}

so that I can call the function whenever I need it, such as below,

$string = 'pg_cat_id=1&tmp_id=4&parent_id=2';

echo stringToVarVars($string);

echo $tmp_id; // I will get 4 as the restult.

Many thanks,
Lau

thanks. I have a better solution now :slight_smile:

parse_str($string);
echo $parent_id;

:blush:

Wrap it in a function block and change the last line to:


        $GLOBALS[$v] = $array_child[1];

What you’re doing is wrong, however. You shouldn’t pollute the global scope like this.