<?php
$template = ['A', 'B', 'C'];
$myArray = [
new Element('B'),
new Element('C'),
new Element('A'),
];
class Element
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
}
usort($myArray, function($a, $b) use ($template) {
return array_search($template, $a) - array_search($template, $b);
});
var_dump($myArray);
Fatal error: Uncaught TypeError: array_search(): Argument #2 ($haystack) must be of type array, Element given in /in/FnY8k:22
Stack trace:
#0 /in/FnY8k(22): array_search(Array, Object(Element))
#1 [internal function]: {closure}(Object(Element), Object(Element))
#2 /in/FnY8k(21): usort(Array, Object(Closure))
#3 {main}
thrown in /in/FnY8k on line 22
Process exited with code 255.
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28
Fatal error: Uncaught TypeError: array_search(): Argument #2 ($haystack) must be of type array, Element given in /in/FnY8k:22
Stack trace:
#0 /in/FnY8k(22): array_search(Array, Object(Element))
#1 [internal function]: {closure}(Object(Element), Object(Element))
#2 /in/FnY8k(23): usort(Array, Object(Closure))
#3 {main}
thrown in /in/FnY8k on line 22
Process exited with code 255.
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
array(3) {
[0]=>
object(Element)#1 (1) {
["name"]=>
string(1) "B"
}
[1]=>
object(Element)#2 (1) {
["name"]=>
string(1) "C"
}
[2]=>
object(Element)#3 (1) {
["name"]=>
string(1) "A"
}
}
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
Warning: array_search() expects parameter 2 to be array, object given in /in/FnY8k on line 22
array(3) {
[0]=>
object(Element)#3 (1) {
["name"]=>
string(1) "A"
}
[1]=>
object(Element)#2 (1) {
["name"]=>
string(1) "C"
}
[2]=>
object(Element)#1 (1) {
["name"]=>
string(1) "B"
}
}