1--TEST--
2Test usort() function : usage variations - referenced variables
3--FILE--
4<?php
5/* Prototype  : bool usort(array $array_arg, string $cmp_function)
6 * Description: Sort an array by values using a user-defined comparison function
7 * Source code: ext/standard/array.c
8 */
9
10/*
11 * Pass an array of referenced variables as $array_arg to test behaviour
12 */
13
14echo "*** Testing usort() : usage variation ***\n";
15
16function cmp_function($value1, $value2)
17{
18  if($value1 == $value2) {
19    return 0;
20  }
21  else if($value1 > $value2) {
22    return 1;
23  }
24  else {
25    return -1;
26  }
27}
28
29// different variables which are used as elements of $array_arg
30$value1 = -5;
31$value2 = 100;
32$value3 = 0;
33$value4 = &$value1;
34
35// array_args an array containing elements with reference variables
36$array_arg = array(
37  0 => 10,
38  1 => &$value4,
39  2 => &$value2,
40  3 => 200,
41  4 => &$value3,
42);
43
44echo "\n-- Sorting \$array_arg containing different references --\n";
45var_dump( usort($array_arg, 'cmp_function') );
46var_dump($array_arg);
47?>
48===DONE===
49--EXPECTF--
50*** Testing usort() : usage variation ***
51
52-- Sorting $array_arg containing different references --
53bool(true)
54array(5) {
55  [0]=>
56  &int(-5)
57  [1]=>
58  &int(0)
59  [2]=>
60  int(10)
61  [3]=>
62  &int(100)
63  [4]=>
64  int(200)
65}
66===DONE===
67