如何在PHP中对关联数组进行排序,然后找到结果的字符串索引


How to sort an associative array in PHP then find the string index of the results

如果我有一个类似的关联数组

$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函数。

相关文章: