如何在没有循环的特定位置获得元素key
和位置数组value
的元素。n
想象
$postion = 3; // get array at 3rd position
$array = array(
"A" => "Four",
"B" => "twp",
"C" => "three",
"D" => "Four",
"E" => "Five",
"F" => "Four");
$keys = array_keys($array);
$value = array_values($array);
echo implode(array_slice($keys, $postion, 1)), PHP_EOL; // Key at 3rd posstion
echo implode(array_slice($value, $postion, 1)), PHP_EOL; // Value at n position
输出
D
Four
该方法的问题是
- 数组的多次复制导致更高的内存使用率
为什么不使用循环
- 您必须多次获得多个位置..循环大型数据集也效率不高
为什么不使用数据库
- 是的,使用像 Redis 这样的基于内存的数据库可以让生活更轻松,但特别是数组优化
为什么不使用SplFixedArray
这本来是解决方案,但我遵循的是因为我没有使用正键(我真的这在 php 部分也不公平)
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'array must contain only positive integer keys'
大数据集是什么意思:
- 实际上,我在尝试这个问题时偶然发现了这个问题,在 PHP 中管理大型数组,所以我正在查看
1e6
或1e7
使用512M memory limit
我确信像fseek
for array 这样的东西可以解决问题..但不确定是否存在