通过子字符串命令php数组

时间:2014-10-02 22:08:05

标签: php arrays sorting date timestamp

我有一个数组:

Array
(
    [0] => 20140929102023_taxonomies.zip
    [1] => 20140915175317_taxonomies.zip
    [2] => 20140804112307_taxonomies.zip
    [3] => 20141002162349_taxonomies.zip
)

我想用前14个字符的字符来命令这个数组,它代表一个日期。 我想要一个像这样的数组:

Array
(
    [0] => 20140804112307_taxonomies.zip
    [1] => 20140915175317_taxonomies.zip
    [2] => 20140929102023_taxonomies.zip
    [3] => 20141002162349_taxonomies.zip
)

感谢。

2 个答案:

答案 0 :(得分:0)

使用自然排序算法的sort()函数应该可以为您提供所需的结果。它就这么简单。

sort($array, SORT_NATURAL);

这会更新现有的$array变量,您不需要存储sort函数的返回值。它只是返回true或falseon成功和失败。

sort函数也会更新键,如果由于某种原因需要维护键,只需更新顺序,就可以使用asort()

asort($array, SORT_NATURAL);

PHP有很多方法可以对数组进行排序,你可以找到here的手册。

答案 1 :(得分:0)

无需使用自然排序算法。正常的sort()会产生你想要的效果,因为它会比较每个字符串“从左边开始”。例如,“20141002162349_taxonomies.zip”大于“20140929102023_taxonomies”,因为第五个字符(月份的第一个数字)在第一个中是1而在第二个中是0(并且1> 0,即使在字符串中 - 比较适用于ASCII码点)。

所以:

<?php
$array = array('20141002162349_taxonomies.zip', '20140929102023_taxonomies.zip', '20140804112307_taxonomies.zip', '20140915175317_taxonomies.zip');
sort($array);
var_dump($array);

结果:

array(4) {
  [0]=>
  string(29) "20140804112307_taxonomies.zip"
  [1]=>
  string(29) "20140915175317_taxonomies.zip"
  [2]=>
  string(29) "20140929102023_taxonomies.zip"
  [3]=>
  string(29) "20141002162349_taxonomies.zip"
}