我有一个数组中的文件列表,其中文件名是键,值是最后修改日期(以秒为单位)。它们从最旧到最新排序。
文件为glob()
,然后使用
asort($fileNameToLastModified, SORT_NUMERIC);
我使用array_shift()来获取最旧的文件。不幸的是,它似乎给了我价值,而且似乎没有办法获得钥匙。
这样做的唯一方法是这样吗?
$keys = array_keys($fileNameToLastModified);
$oldest = array_shift($keys);
array_shift($fileNameToLastModified); // to manually chop the first array member off too.
......还是有内置方法可以做到这一点?
答案 0 :(得分:15)
$result = array_splice( $yourArray, 0, 1 );
......应该做的伎俩。请参阅array_splice。
答案 1 :(得分:4)
您可以使用each
之类的:
$b = array(1=>2, 3=>4, 7=>3);
while(1) {
list($key,$value) = each($b);
if (empty($key))
break;
echo "$key $val\n";
}
使用each
迭代数组将保持其最后位置。
答案 2 :(得分:3)
不同的方法:
list ($key, $value) = each($srcData); array_shift($srcData);
...(如果您不需要list($key)...
,则只需$value
)。请参阅each和list。
编辑:正如@ztate在评论中指出的那样,each()
函数已被弃用,因此依赖此方法不再是一个好主意。
但我认为通过使用新的key()
函数(未经测试)方式可以解决类似行为:
$key = key($srcData); $selected = array_shift($srcData);
答案 3 :(得分:0)
你也可以这样做:
<?php
$arr = array('a' => 'first', 'b' => 'second');
// This is your key,value shift line
foreach($arr as $k => $v) { break; }
echo "Key: $k\nValue: $k";
这将输出:
Key: a
Value: first
我不确定性能如何,所以你可能想要进行一些分析,但对于大型数组,它可能比array_keys()
快,因为它不需要迭代整个事物
答案 4 :(得分:0)
您可以查看key()
,current()
或each()
。他们做你要求的。
我不确定你是否打算事后从数组中获得更多的键/值对。因此,我不会详细介绍您可能需要做的其他事情。
答案 5 :(得分:0)
另一种短暂工作的可能性:
foreach ($array as $key => $value) break;
unset($array[$key]);