是否有可能在PHP中使用array_shift()并获取密钥?
问题描述:
我有一个数组中的文件列表,其中文件名是键,值是以秒为单位的最后修改日期。他们从最旧到最新排序。是否有可能在PHP中使用array_shift()并获取密钥?
的文件是3210倒是在,然后排序利用
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.
......还是有内置的方法来做到这一点?
答
你也可以这样做:
<?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()
,因为它不需要遍历整个事物。
答
你可以看看key()
,current()
或each()
。他们做你所要求的。
我不确定是否打算实际从数组中获得更多的键/值对。所以我不会详细说明你可能需要做什么。
答
您可以使用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
阵列将保持其最后的位置。
答
另一种可能是短暂的工作:
foreach ($array as $key => $value) break;
unset($array[$key]);
最后我只是保持什么我有,因为我仍然需要做一个'array_keys()'并获得一个数组成员。但这仍然是另一种方式,所以我会接受:) – alex 2010-03-08 01:34:23
我想你的意思是'$ result = key(array_splice($ yourArray,0,1));'? – cronoklee 2018-01-18 18:34:36