Php поиск по ключу в массиве
Автор Антон Городедский задал вопрос в разделе Другие языки и технологии
Работа с массивом PHP. Найти значение ключа по индексу. и получил лучший ответ
Ответ от Katze von Ulthar[гуру]
в php массивы странные. в них одновременно есть и строковые, и целочисленные ключи. строковые живут как есть, а целочисленные, если не определены явно, вычисляются как максимальный имеющийся целочисленный ключ + 1. для каждого строковго ключа создается еще и целочисленный до кучи, по тем же правилам. ну, и индексы так-то от 0 считаются, а не от 1. т. е. "В" - это 0, "К" - 1, а "Н" - 2 (до того, как ты потом явно делаешь элемент 2 равным "Два")
не исключено, что я гоню, но попробуй двойку в кавычки взять
Ответ от Lexx918[гуру]
$ar = array(
'Vasya' => 'V',
'Kolya' => 'K',
'Nastya' => 'N',
'2' => 'Dva',
);
$k = 2;
// 1
$vals = array_values($ar);
var_dump($vals[$k - 1]);
// 2
$keys = array_keys($ar);
var_dump($ar[$keys[$k - 1]]);
// 3 (если массив огромный, то вот так можно не кушать лишней памяти на копирование ключей или значений)
$i = 1;
foreach ($ar as &$val) {
if ($i == $k) {
var_dump($val);
break;
}
$i++;
}
unset($val);
$ar = array(
'Vasya' => 'V',
'Kolya' => 'K',
'Nastya' => 'N',
'2' => 'Dva',
);
$k = 2;
// 1
$vals = array_values($ar);
var_dump($vals[$k - 1]);
// 2
$keys = array_keys($ar);
var_dump($ar[$keys[$k - 1]]);
// 3 (если массив огромный, то вот так можно не кушать лишней памяти на копирование ключей или значений)
$i = 1;
foreach ($ar as &$val) {
if ($i == $k) {
var_dump($val);
break;
}
$i++;
}
unset($val);
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Работа с массивом PHP. Найти значение ключа по индексу.
Ассоциативные массивы PHP
гугли понятие "хэш-таблица"
Грубо говоря, пхп создает массив, где четные элементы -
подробнее...