我有一组医生,每个医生都有多个键值对
doctor {
type: "bla",
doctor-name: "bla",
doctor-state-id: "bla",
doctor-state: "AL",
...
}
我正在运行一个for循环,以在前端显示列表。它们的显示方式是按状态显示的,想象一个以状态为标题的<li>
标签,然后列出下面的医生。下一个状态具有另一个<li>
,依此类推。目前,只有州按字母顺序列出,但其中的医生姓名却没有。
我想我无法在for循环中对数组进行排序,并且我尝试了其他几种ksort
,usort
和asort
方法,目的是使索引保持不变。有任何线索吗?
这是一个更离散的示例:
Alaska
John Doe, MD, PhD - Anchorage - Neurosurgeon
Jane Doe, MD, MBI - Anchorage - Neurosurgeon
简·多伊(Jane Doe)必须先于约翰·多伊(John Doe)。
答案 0 :(得分:0)
您可以使用uasort()
并在比较函数中返回状态的排序顺序,但是如果状态相同,则返回人员姓名的排序顺序。
uasort($array, function($a, $b) {
if ($a['doctor-state'] == $b['doctor-state']) {
return strcmp($a['doctor-name'], $b['doctor-name']);
} else {
return strcmp($a['doctor-state'], $b['doctor-state']);
}
});