How to Pass Arguments by Value and Reference

An argument passed by value

      function add_3_by_val($value) {
        $value += 3; 
        echo("<p>Value: $value</p>\n");
      } 
      $number = 5;
      add_3_by_val($number);
      echo("<p>Number: $number</p>\n");
      

Value: 8

Number: 5

An argument passed by reference

function add_3_by_ref(&$value) {
  $value += 3;
  echo("<p>Value: $value</p>\n"); // Displays 8
}
$number = 5;
add_3_by_ref($number);
echo("<p>Value: $value</p>\n"); // Displays 8

Value: 8

Number: 8

How to modify a string that’s passed by reference

function wrap_in_tag(&$text, $tag) {
  $before = '<' . $tag . '>';
  $after = '';
  $text = $before . $text . $after;
}
$message = 'Value out of range.';
wrap_in_tag($message, 'p');
echo("<p>$message</p>\n"); // Value out of range.

Value out of range.

How to return multiple values

function array_analyze($array, &$sum, &$prod, &$avg) {
  $sum = array_sum($array);
  $prod = array_product($array);
  $avg = $sum / count($array);
}
$list = array(1, 4, 9, 16);
array_analyze($list, $s, $p, $a);
echo("<p>Sum: $s Product: $p Average: $a</p>\n");

Sum: 30 Product: 576 Average: 7.5

Back