Как получить элемент 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
Проблемы С помощью метода
- Многократное дублирование массива, что приводит к увеличению использования памяти
Почему бы не использовать loop
- Вам нужно получить несколько позиций несколько раз. Цикл большого набора данных неэффективен.
Почему бы не использовать базу данных
- Да, работа с базой данных на базе данных, такой как Redis, может облегчить жизнь, но я оптимизирую конкретный массив.
Почему бы не использовать SplFixedArray
-
Это было бы решением, но я следую за ним, потому что не использую положительные ключи (я действительно это не честно на php-части)
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'array must contain only positive integer keys'
Что вы подразумеваете под большим набором данных:
- На самом деле я наткнулся на эту проблему при попытке как на этот вопрос Управление мега-массивами в PHP, поэтому я смотрю
1e6
или1e7
с512M memory limit
Я уверен, что что-то вроде fseek
для массива сделает трюк.. но не уверен, что это существует