xref: /PHP-8.4/ext/standard/tests/array/bug28739.phpt (revision dadb92ea)
1--TEST--
2Bug #28739 (*diff() and *intersect() not clearing the fci cache before work)
3--FILE--
4<?php
5class p {
6   public $x;
7   function __construct($x){$this->x=$x;}
8}
9function a($a, $b){var_dump(__FUNCTION__);return $a->x - $b->x;}
10function b($a, $b){var_dump(__FUNCTION__);return $a->x - $b->x;}
11
12$p1 = array(new p(2), new p(1), new p(0));
13$p2 = array(new p(0), new p(2), new p(3));
14
15uasort($p1, 'a');
16print_r($p1);
17echo "Now diffing:\n";
18print_r(array_udiff($p1,$p2, 'b'));
19?>
20--EXPECT--
21string(1) "a"
22string(1) "a"
23Array
24(
25    [2] => p Object
26        (
27            [x] => 0
28        )
29
30    [1] => p Object
31        (
32            [x] => 1
33        )
34
35    [0] => p Object
36        (
37            [x] => 2
38        )
39
40)
41Now diffing:
42string(1) "b"
43string(1) "b"
44string(1) "b"
45string(1) "b"
46string(1) "b"
47string(1) "b"
48string(1) "b"
49string(1) "b"
50string(1) "b"
51Array
52(
53    [1] => p Object
54        (
55            [x] => 1
56        )
57
58)
59