3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Role { public $public; protected $protected; private $private; public function __construct($prop) { $this->public = $prop; $this->protected = $prop; $this->private = $prop; } } $test = [(new Role(false)), (new Role(1)), (new Role(null)), (new Role("1")), (new Role(2)), (new Role(0))]; var_export( array_unique($test, SORT_REGULAR) ); echo "\n---\n"; var_export( array_filter( $test, fn($o, $k) => array_search($o, $test, true) === $k, ARRAY_FILTER_USE_BOTH ) );
Output for 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.5.0 - 8.5.1
array ( 0 => \Role::__set_state(array( 'public' => false, 'protected' => false, 'private' => false, )), 1 => \Role::__set_state(array( 'public' => 1, 'protected' => 1, 'private' => 1, )), 4 => \Role::__set_state(array( 'public' => 2, 'protected' => 2, 'private' => 2, )), ) --- array ( 0 => \Role::__set_state(array( 'public' => false, 'protected' => false, 'private' => false, )), 1 => \Role::__set_state(array( 'public' => 1, 'protected' => 1, 'private' => 1, )), 2 => \Role::__set_state(array( 'public' => NULL, 'protected' => NULL, 'private' => NULL, )), 3 => \Role::__set_state(array( 'public' => '1', 'protected' => '1', 'private' => '1', )), 4 => \Role::__set_state(array( 'public' => 2, 'protected' => 2, 'private' => 2, )), 5 => \Role::__set_state(array( 'public' => 0, 'protected' => 0, 'private' => 0, )), )
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.
Output for 8.1.0 - 8.1.33
array ( 0 => Role::__set_state(array( 'public' => false, 'protected' => false, 'private' => false, )), 1 => Role::__set_state(array( 'public' => 1, 'protected' => 1, 'private' => 1, )), 4 => Role::__set_state(array( 'public' => 2, 'protected' => 2, 'private' => 2, )), ) --- array ( 0 => Role::__set_state(array( 'public' => false, 'protected' => false, 'private' => false, )), 1 => Role::__set_state(array( 'public' => 1, 'protected' => 1, 'private' => 1, )), 2 => Role::__set_state(array( 'public' => NULL, 'protected' => NULL, 'private' => NULL, )), 3 => Role::__set_state(array( 'public' => '1', 'protected' => '1', 'private' => '1', )), 4 => Role::__set_state(array( 'public' => 2, 'protected' => 2, 'private' => 2, )), 5 => Role::__set_state(array( 'public' => 0, 'protected' => 0, 'private' => 0, )), )

preferences:
109.97 ms | 412 KiB | 5 Q