如果我有一个类似的关联数组
$array = array();
$array['e01'] = '03/16/2012';
$array['e02'] = '03/14/2012';
$array['e05'] = '03/01/2014';
我想按日期对数组进行排序,然后循环遍历结果以获得索引的值,即e01、e02、e05。我需要那个索引来从对象中检索信息。
尝试uasort()
对数组进行排序:
function mysort($a, $b) {
return (strtotime($a) < strtotime($b)) ? -1 : 1;
}
uasort($array, 'mysort');
要获得密钥,只需使用array_keys()
对关联数组进行排序时,键和值的顺序会改变,但键与值的关联不会改变。因此,如果密钥e01
的值为03/16/2012
,即使在uasort
之后(这可能是您想要的,请参阅Crashspeeder的答案),e01
仍然具有值03/16/2012
。如果您想在保持密钥顺序的同时更改值的顺序:
- 使用array_keys获取键的当前顺序
- 使用usort(不需要uasort,因为我们不保留键)按日期对值进行排序
- 使用arraycombine创建一个包含键和值的新数组
来自asort()
上的PHP文档。这将按值对其进行排序,并允许您访问每个索引的关键字和值:
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val'n";
}
使用array_keys函数。