php получить ключ массива [дубликат]
Более универсальный способ проверки значений, подходит для вложенных массивов:
function check($array, $value) < foreach ($array as $key =>$inner) < if (is_array($inner)) < if (check($inner, $value)) < return true; >> else < if ($value == $inner) < return true; >> > return false; >
if (check($pages, 'main')) < // нашли 'main'. >else < // не нашли 'main'. >
Отслеживать
ответ дан 28 фев 2016 в 12:41
365 1 1 серебряный знак 9 9 бронзовых знаков
вы ищите в верхнем уровне массива, так работать не будет. а так должно:
foreach($pages as $k=>$v)
Отслеживать
ответ дан 28 фев 2016 в 11:30
16.4k 2 2 золотых знака 15 15 серебряных знаков 24 24 бронзовых знака
- php
- массивы
-
Важное на Мете
Связанные
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как получить список ключей массива php
В PHP для получения списка ключей из массива есть встроенная функция array_keys() . Вот пример, как она работает:
$user = ["first_name" => "John", "last_name" => "Deere", "age" => 47]; $keys = array_keys($user); print_r($keys); // => ["first_name", "last_name", "age"]
Как в php найти ключ в массиве по значению

Для того что бы определить ключ массива зная его значения, можно использовать как минимум три варианта решения.
- Мы можем использовать известную уже нам ф-ю array_search. Ранее в статье про удалении элемента из массива ее мы уже использовали.
- В цикле, пройтись по всем элементам массива и сравнив значения, определить ключ.
- Использовать ф-ю «array_walk», имитируя вариант из пункта 2.
'Lorem', 12 => 'Ipsum', 15 => 'simply', 20 => 'dummy', 33 => 'text', ];
Выше массив значений, где ключи и значения уникальны. Подчеркиваю, что значения уникальны. Если в ваших примерах будут встречаться одинаковые значения, то будут возвращены ключи, первых значений одинаковых элементов.
Пример 1
В нем мы используем PHP ф-ю array_search, и ищем ключ, значение у которого «simply»:
Результатом будет — int(15)
Пример 2
Используем цикл «foreach» для обхода всех элементов массива, и условный оператор «if» для сравнения значений.
$value ) < if($search_value == $value) < var_dump($key); echo "n"; break; >>
Для значения «Ipsum», ответом будет ключ «int(12)»
Пример 3
Пожалуй самый длинный и самый странный из вариантов, это использование функции «array_walk» и передачи по ссылке найденного ключа «$search_key» через use:
>, $search_value); var_dump($search_key);
Результатом будет или NULL в случае если ключ не был найден, или «int(10)» в случае найденного значения «Lorem».
Какой итог этого всего. Не морочьте себе голову, а используйте то что уже есть в PHP встроенное, а это готовую ф-ю «array_search».
Раньше, на заре своей карьеры PHP программиста, я часто писал подобные велосипеды как из примеров 2 и 3. Со временем, я поумнел, и начал заглядывать в документацию PHP и искать может уже есть что-то готовое. А сейчас, при существования гитхаба и ему подобных, скорость разработки можно увеличить еще на порядок больше. Удачи!
Поделиться в соцсетях:
С вашим WordPress сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.
Как получить ключ массива php
key — Выбирает ключ из массива
Описание
key ( array | object $array ): int | string | null
key() возвращает индекс текущего элемента массива.
Список параметров
Возвращаемые значения
Функция key() просто возвращает ключ того элемента массива, на который в данный момент указывает внутренний указатель массива. Она не сдвигает указатель ни в каком направлении. Если внутренний указатель указывает вне границ массива или массив пуст, key() возвратит null .
Список изменений
| Версия | Описание |
|---|---|
| 8.1.0 | Вызов функции в объекте ( object ) объявлен устаревшим. Либо сначала преобразуйте объект ( object ) в массив ( array ) с помощью функции get_mangled_object_vars() , либо используйте методы, предоставляемые классом, реализующим интерфейс Iterator , например, ArrayIterator . |
| 7.4.0 | Экземпляры классов SPL теперь обрабатываются как пустые объекты, не имеющие свойств, вместо вызова метода Iterator с тем же именем, что и эта функция. |
Примеры
Пример #1 Пример использования key()
$array = array(
‘fruit1’ => ‘apple’ ,
‘fruit2’ => ‘orange’ ,
‘fruit3’ => ‘grape’ ,
‘fruit4’ => ‘apple’ ,
‘fruit5’ => ‘apple’ );
?php
// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны «apple»
while ( $fruit_name = current ( $array )) if ( $fruit_name == ‘apple’ ) echo key ( $array ), «\n» ;
>
next ( $array );
>
?>
Результат выполнения данного примера:
fruit1 fruit4 fruit5
Смотрите также
- current() — Возвращает текущий элемент массива
- next() — Перемещает указатель массива вперёд на один элемент
- array_key_first() — Получает первый ключ массива
- foreach
User Contributed Notes 5 notes
9 years ago
Note that using key($array) in a foreach loop may have unexpected results.
When requiring the key inside a foreach loop, you should use:
foreach($array as $key => $value)
I was incorrectly using:
foreach( $array as $value )
$mykey = key ( $array );
>
?>
and experiencing errors (the pointer of the array is already moved to the next item, so instead of getting the key for $value, you will get the key to the next value in the array)
CORRECT:
foreach( $array as $key => $value )
$mykey = $key ;
>
A noob error , but felt it might help someone else out there .
10 years ago
Suppose if the array values are in numbers and numbers contains `0` then the loop will be terminated. To overcome this you can user like this
while ( $fruit_name = current ( $array ))
echo key ( $array ). ‘
‘ ;
next ( $array );
>
// the way will be break loop when arra(‘2’=>0) because its value is ‘0’, while(0) will terminate the loop
// correct approach
while ( ( $fruit_name = current ( $array )) !== FALSE )
echo key ( $array ). ‘
‘ ;
next ( $array );
>
//this will work properly
?>
12 years ago
Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.
reset ( $x ); // optional.
arsort ( $x );
$key_of_max = key ( $x ); // returns the index.
?>
3 years ago
(Editor note: Or just use the array_keys function)
Make as simple as possible but not simpler like this one 🙂
4 years ago
In addition to FatBat’s response, if you’d like to find out the highest key in an array (assoc or not) but don’t want to arsort() it, take a look at this:
$arr = [ ‘3’ => 14 , ‘1’ => 15 , ‘4’ => 92 , ’15’ => 65 ];
$key_of_max = array_search ( max ( $arr ) , $arr );
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy