Перейти к содержимому

Как получить ключ массива php

  • автор:

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 найти ключ в массиве по значению

Как в php найти ключ в массиве по значению

Для того что бы определить ключ массива зная его значения, можно использовать как минимум три варианта решения.

  1. Мы можем использовать известную уже нам ф-ю array_search. Ранее в статье про удалении элемента из массива ее мы уже использовали.
  2. В цикле, пройтись по всем элементам массива и сравнив значения, определить ключ.
  3. Использовать ф-ю «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’ );

// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны «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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *