1--TEST--
2Test arsort() function : object functionality - sort objects
3--FILE--
4<?php
5/* Prototype  : bool arsort ( array &$array [, int $asort_flags] )
6 * Description: Sort an array and maintain index association.
7                Elements will be arranged from highest to lowest when this function has completed.
8 * Source code: ext/standard/array.c
9*/
10
11/*
12 * testing arsort() by providing integer/string object arrays with following flag values
13 * 1. Defualt flag value
14 * 2. SORT_REGULAR - compare items normally
15*/
16
17echo "*** Testing arsort() : object functionality ***\n";
18
19// class declaration for integer objects
20class for_integer_arsort
21{
22  public $class_value;
23  // initializing object member value
24  function __construct($value){
25    $this->class_value = $value;
26  }
27
28}
29
30// class declaration for string objects
31class for_string_arsort
32{
33  public $class_value;
34  // initializing object member value
35  function __construct($value){
36    $this->class_value = $value;
37   }
38
39  // return string value
40  function __tostring() {
41   return (string)$this->value;
42  }
43
44}
45
46// array of integer objects
47$unsorted_int_obj = array (
48  1 => new for_integer_arsort(11), 2 =>  new for_integer_asort(66),
49  3 => new for_integer_arsort(23), 4 => new for_integer_asort(-5),
50  5 => new for_integer_arsort(0.001), 6 => new for_integer_asort(0)
51);
52
53// array of string objects
54$unsorted_str_obj = array (
55  "a" => new for_string_arsort("axx"), "b" => new for_string_asort("t"),
56  "c" => new for_string_arsort("w"), "d" => new for_string_asort("py"),
57  "e" => new for_string_arsort("apple"), "f" => new for_string_asort("Orange"),
58  "g" => new for_string_arsort("Lemon"), "h" => new for_string_asort("aPPle")
59);
60
61
62echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is defualt --\n";
63
64// testing arsort() function by supplying integer object array, flag value is defualt
65$temp_array = $unsorted_int_obj;
66var_dump(arsort($temp_array) );
67var_dump($temp_array);
68
69// testing arsort() function by supplying string object array, flag value is defualt
70$temp_array = $unsorted_str_obj;
71var_dump(arsort($temp_array) );
72var_dump($temp_array);
73
74echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is SORT_REGULAR --\n";
75// testing arsort() function by supplying integer object array, flag value = SORT_REGULAR
76$temp_array = $unsorted_int_obj;
77var_dump(arsort($temp_array, SORT_REGULAR) );
78var_dump($temp_array);
79
80// testing arsort() function by supplying string object array, flag value = SORT_REGULAR
81$temp_array = $unsorted_str_obj;
82var_dump(arsort($temp_array, SORT_REGULAR) );
83var_dump($temp_array);
84
85echo "Done\n";
86?>
87--EXPECTF--
88*** Testing arsort() : object functionality ***
89
90Fatal error: Uncaught Error: Class 'for_integer_asort' not found in %sarsort_object1.php:%d
91Stack trace:
92#0 {main}
93  thrown in %sarsort_object1.php on line %d