想知道在对象集合上执行asort
时,是否有人可以帮助了解PHP正在做什么。
采取以下片段:
class NameValuePair
{
private $name;
private $value;
public function __construct($name, $value)
{
$this->name = $name;
$this->value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
}
$nameValuePairs = [
new NameValuePair('f', 'f'),
new NameValuePair('b', 'b'),
new NameValuePair('z', 'z'),
new NameValuePair('s', 's')
];
asort($nameValuePairs);
asort正在按$name
个实例的NameValuePair
属性对数组进行正确排序 - 生成的数组包含bfsz
我已经实现了两个单元测试 - 我没想到asort
正确地对集合进行排序,我总是使用usort
来对对象数组进行排序。
请参阅此要点以获取完整背景和单元测试:https://gist.github.com/mgldev/91386cc6e3d65fc239de60dc1bc46114
一般思考
无法在线查找有关PHP在执行asort时如何处理数组中对象的文档
原本会认为默认行为是spl_object_hash和散列上的排序
有什么想法吗?