Skip to Content
Learn
Associative Arrays
Assign by Value or by Reference

There are two ways to assign one variable to another:

  • By value—this creates two variables which hold copies of the same value but remain independent entities.
  • By reference—this creates two variable names (aliases) which point to the same space in memory. They cannot be modified separately!

This remains true when dealing with array variables:

$favorites = ["food"=>"pizza", "person"=>"myself", "dog"=>"Tadpole"]; $copy = $favorites; $alias =& $favorites; $favorites["food"] = "NEW!"; echo $favorites["food"]; // Prints: NEW! echo $copy["food"]; // Prints: pizza echo $alias["food"]; // Prints: NEW!

When passing arrays into functions, both built-in functions and those we write ourselves, we’ll want to be conscious of whether the arrays are being passed by value or by reference.

function changeColor ($arr) { $arr["color"] = "red"; } $object = ["shape"=>"square", "size"=>"small", "color"=>"green"]; changeColor ($object); echo $object["color"]; // Prints: green

Our function above doesn’t accept its array argument by reference. Therefore, $arr is merely assigned a copy of the argument’s value. This copy array is changed when the function is invoked, but that doesn’t affect the orginal argument array ($object). To do that, we’d need to pass it by reference:

function reallyChangeColor (&$arr) { $arr["color"] = "red"; } $object = ["shape"=>"square", "size"=>"small", "color"=>"green"]; reallyChangeColor ($object); echo $object["color"]; // Prints: red

Cool! Let’s write some array functions!

Instructions

1.

Create a function, createMeme() that takes in a $meme array and returns a new custom meme about PHP.

The $meme array will have the following keys: "top_text", "bottom_text", "img", and "description".

The function should change the value of "top_text" to "Much PHP" and the "bottom_text" to "Very programming. Wow."

The function should not permanently alter its argument.

2.

Create a variable $php_doge and assign as its value the result of invoking your createMeme() with $doge_meme.

Note: we recommend using the print_r() function to see the arrays you’re creating and using, but it’s not required.

3.

Write a function fixMeme() that takes in a $meme array and permanently changes the "top_text" and "bottom_text" to strings of your chosing.

4.

Invoke your fixMeme() function with the $bad_meme array we provided.

Folder Icon

Take this course for free

Already have an account?