Annotation of embedaddon/php/ext/standard/tests/array/uasort_object1.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test uasort() function : object functionality
3: --FILE--
4: <?php
5: /* Prototype : bool uasort(array $array_arg, string $cmp_function)
6: * Description: Sort an array with a user-defined comparison function and maintain index association
7: * Source code: ext/standard/array.c
8: */
9:
10: /*
11: * Testing uasort() function with the array of objects
12: * array of objects which has only one member variable & more than one member variables
13: */
14:
15: echo "*** Testing uasort() : object functionality ***\n";
16:
17: // comparison function
18: /* Prototype : int cmp(mixed $value1, mixed $value2)
19: * Parameters : $value1 and $value2 - values to be compared
20: * Return value : 0 - if both values are same
21: * 1 - if value1 is greater than value2
22: * -1 - if value1 is less than value3
23: * Description : compares value1 and value2
24: */
25: function simple_cmp($value1, $value2)
26: {
27: if($value1 == $value2) {
28: return 0;
29: }
30: else if($value1 > $value2) {
31: return 1;
32: }
33: else
34: return -1;
35: }
36:
37: // comparison function for SimpleClass2 objects which has more than one members
38: function multiple_cmp($value1, $value2)
39: {
40: if($value1->getValue() == $value2->getValue())
41: return 0;
42: else if($value1->getValue() > $value2->getValue())
43: return 1;
44: else
45: return -1;
46: }
47:
48: // Simple class with single member variable
49: class SimpleClass1
50: {
51: private $int_value;
52:
53: public function __construct($value) {
54: $this->int_value = $value;
55: }
56: }
57:
58: // Simple class with more than one member variables
59: class SimpleClass2
60: {
61: private $int_value;
62: protected $float_value;
63: public $string_value;
64: public function __construct($int, $float, $str) {
65: $this->int_value = $int;
66: $this->float_value = $float;
67: $this->string_value = $str;
68: }
69: public function getValue() {
70: return $this->int_value;
71: }
72: }
73:
74: // array of SimpleClass objects with only one member
75: $array_arg = array(
76: 0 => new SimpleClass1(10),
77: 1 => new SimpleClass1(1),
78: 2 => new SimpleClass1(100),
79: 3 => new SimpleClass1(50)
80: );
81: var_dump( uasort($array_arg, 'simple_cmp') );
82: var_dump($array_arg);
83:
84: // array of SimpleClass objects having more than one members
85: $array_arg = array(
86: 0 => new SimpleClass2(2, 3.4, "mango"),
87: 1 => new SimpleClass2(10, 1.2, "apple"),
88: 2 => new SimpleClass2(5, 2.5, "orange"),
89: );
90: var_dump( uasort($array_arg, 'multiple_cmp') );
91: var_dump($array_arg);
92:
93: echo "Done"
94: ?>
95: --EXPECTF--
96: *** Testing uasort() : object functionality ***
97: bool(true)
98: array(4) {
99: [1]=>
100: object(SimpleClass1)#2 (1) {
101: ["int_value":"SimpleClass1":private]=>
102: int(1)
103: }
104: [0]=>
105: object(SimpleClass1)#1 (1) {
106: ["int_value":"SimpleClass1":private]=>
107: int(10)
108: }
109: [3]=>
110: object(SimpleClass1)#4 (1) {
111: ["int_value":"SimpleClass1":private]=>
112: int(50)
113: }
114: [2]=>
115: object(SimpleClass1)#3 (1) {
116: ["int_value":"SimpleClass1":private]=>
117: int(100)
118: }
119: }
120: bool(true)
121: array(3) {
122: [0]=>
123: object(SimpleClass2)#5 (3) {
124: ["int_value":"SimpleClass2":private]=>
125: int(2)
126: ["float_value":protected]=>
127: float(3.4)
128: ["string_value"]=>
129: string(5) "mango"
130: }
131: [2]=>
132: object(SimpleClass2)#7 (3) {
133: ["int_value":"SimpleClass2":private]=>
134: int(5)
135: ["float_value":protected]=>
136: float(2.5)
137: ["string_value"]=>
138: string(6) "orange"
139: }
140: [1]=>
141: object(SimpleClass2)#6 (3) {
142: ["int_value":"SimpleClass2":private]=>
143: int(10)
144: ["float_value":protected]=>
145: float(1.2)
146: ["string_value"]=>
147: string(5) "apple"
148: }
149: }
150: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>