array_key_first
Получить первый ключ заданного массива array , не затрагивая внутренний указатель массива.
Список параметров
Возвращаемые значения
Возвращает первый ключ массива array , если он не пустой; null в противном случае.
Примеры
Пример #1 Пример использования array_key_first()
$firstKey = array_key_first ( $array );
Результат выполнения данного примера:
string(1) "a"
Примечания
Подсказка
Есть несколько способов предоставить функциональность для версий до PHP 7.3.0. Можно использовать array_keys() , но это может быть довольно неэффективно. Также можно использовать reset() и key() , но это может изменить внутренний указатель массива. Эффективное решение, которое не изменяет внутренний указатель массива, записанный, как полифил:
if (! function_exists ( ‘array_key_first’ )) function array_key_first (array $arr ) foreach( $arr as $key => $unused ) return $key ;
>
return NULL ;
>
>
?>?php
Смотрите также
- array_key_last() — Получает последний ключ массива
- reset() — Устанавливает внутренний указатель массива на его первый элемент
User Contributed Notes 1 note
3 months ago
The best way to polyfill array_key_first is:
$first_key = array_keys($array)[0] ?? NULL;
- Функции для работы с массивами
- 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
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.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как получить ключ массива php
(PHP 4, PHP 5, PHP 7, PHP 8)
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
array_keys
Функция array_keys() возвращает числовые и строковые ключи, содержащиеся в массиве array .
Если указан параметр filter_value , функция возвращает ключи у которых значения элементов массива совпадают с этим параметром. В обратном случае, функция возвращает все ключи массива array .
Список параметров
Массив, содержащий возвращаемые ключи.
Если указано, будут возвращены только ключи у которых значения элементов массива совпадают с этим параметром.
Определяет использование строгой проверки на равенство (===) при поиске.
Возвращаемые значения
Возвращает массив со всеми ключами array .
Примеры
Пример #1 Пример использования array_keys()
$array = array( 0 => 100 , «color» => «red» );
print_r ( array_keys ( $array ));?php
$array = array( «blue» , «red» , «green» , «blue» , «blue» );
print_r ( array_keys ( $array , «blue» ));$array = array( «color» => array( «blue» , «red» , «green» ),
«size» => array( «small» , «medium» , «large» ));
print_r ( array_keys ( $array ));
?>Результат выполнения данного примера:
Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size )
Смотрите также
- array_values() — Выбирает все значения массива
- array_combine() — Создаёт новый массив, используя один массив в качестве ключей, а другой для его значений
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- array_search() — Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае успешного выполнения
User Contributed Notes 29 notes
12 years ago
It’s worth noting that if you have keys that are long integer, such as ‘329462291595’, they will be considered as such on a 64bits system, but will be of type string on a 32 bits system.
$importantKeys = array( ‘329462291595’ => null , ‘ZZ291595’ => null );
foreach( array_keys ( $importantKeys ) as $key ) echo gettype ( $key ). «\n» ;
>?>
will return on a 64 bits system:
integer
string
?>but on a 32 bits system:
string
string
?>I hope it will save someone the huge headache I had 🙂
17 years ago
Here’s how to get the first key, the last key, the first value or the last value of a (hash) array without explicitly copying nor altering the original array:
$array = array( ‘first’ => ‘111’ , ‘second’ => ‘222’ , ‘third’ => ‘333’ );
// get the first key: returns ‘first’
print array_shift ( array_keys ( $array ));// get the last key: returns ‘third’
print array_pop ( array_keys ( $array ));// get the first value: returns ‘111’
print array_shift ( array_values ( $array ));// get the last value: returns ‘333’
print array_pop ( array_values ( $array ));
?>8 years ago
It is worth noting that array_keys does not maintain the data-type of the keys when mapping them to a new array. This created an issue with in_array and doing a lookup on characters from a string. NOTE: my lookup $array has a full map of numbers and characters — upper and lower — to do an simple faux encryption with.
$array = array(
‘e’ => ‘ieio’
, ‘1’ => ‘one’
, ‘2’ => ‘two’
, ‘0’ => ‘zero’
);
var_dump ( $array );
$keys = array_keys ( $array );
var_dump ( $keys );$string = ‘1e0’ ;
for ( $i = 0 ; $i < strlen ( $string ); $i ++) if ( in_array ( $string [ $i ], $keys , 'strict' )) echo 'dude ' ;
else echo ‘sweet ‘ ;
>
?>Outputs:
array (size=4)
‘e’ => string ‘ieio’ (length=4)
1 => string ‘one’ (length=3)
2 => string ‘two’ (length=3)
0 => string ‘zero’ (length=4)array (size=4)
0 => string ‘e’ (length=1)
1 => int 1
2 => int 2
3 => int 0sweet dude sweet
—-
expected to see:
dude dude dude9 years ago
There’s a lot of multidimensional array_keys function out there, but each of them only merges all the keys in one flat array.
Here’s a way to find all the keys from a multidimensional array while keeping the array structure. An optional MAXIMUM DEPTH parameter can be set for testing purpose in case of very large arrays.
NOTE: If the sub element isn’t an array, it will be ignore.
function array_keys_recursive ( $myArray , $MAXDEPTH = INF , $depth = 0 , $arrayKeys = array()) if( $depth < $MAXDEPTH )$depth ++;
$keys = array_keys ( $myArray );
foreach( $keys as $key ) if( is_array ( $myArray [ $key ])) $arrayKeys [ $key ] = array_keys_recursive ( $myArray [ $key ], $MAXDEPTH , $depth );
>
>
>return $arrayKeys ;
>
?>EXAMPLE:
input:
array(
‘Player’ => array(
‘id’ => ‘4’,
‘state’ => ‘active’,
),
‘LevelSimulation’ => array(
‘id’ => ‘1’,
‘simulation_id’ => ‘1’,
‘level_id’ => ‘1’,
‘Level’ => array(
‘id’ => ‘1’,
‘city_id’ => ‘8’,
‘City’ => array(
‘id’ => ‘8’,
‘class’ => ‘home’,
)
)
),
‘User’ => array(
‘id’ => ’48’,
‘gender’ => ‘M’,
‘group’ => ‘user’,
‘username’ => ‘Hello’
)
)output:
array(
‘Player’ => array(),
‘LevelSimulation’ => array(
‘Level’ => array(
‘City’ => array()
)
),
‘User’ => array()
)10 years ago
Since 5.4 STRICT standards dictate that you cannot wrap array_keys in a function like array_shift that attempts to reference the array.
Invalid:
echo array_shift( array_keys( array(‘a’ => ‘apple’) ) );Valid:
$keys = array_keys( array(‘a’ => ‘apple’) );
echo array_shift( $keys );But Wait! Since PHP (currently) allows you to break a reference by wrapping a variable in parentheses, you can currently use:
echo array_shift( ( array_keys( array(‘a’ => ‘apple’) ) ) );
However I would expect in time the PHP team will modify the rules of parentheses.
10 years ago
If an array is empty (but defined), or the $search_value is not found in the array, an empty array is returned (not false, null, or -1). This may seem intuitive, especially given the documentation says an array is returned, but I needed to sanity test to be sure:
$emptyArray = array();
var_dump ( array_keys ( $emptyArray , 99 )); // array (size=0) \ empty$filledArray = array( 11 , 22 , 33 , 42 );
var_dump ( array_keys ( $filledArray , 99 )); // array (size=0) \ empty3 years ago
# array_keys() also return the key if it’s boolean but the boolean will return as 1 or 0. It will return empty if get NULL value as key. Consider the following array:
?php>
$a = array(
«first_index» => «This is the first element» ,
true => 3 ,
false => 2 ,
4.5 => ‘Something’ ,
«08» => 5 ,
«8» => 6 ,
NULL => ‘Null key’
);print_r ( array_keys ( $a ));
Array
(
[ 0 ] => first_index
[ 1 ] => 1
[ 2 ] => 0
[ 3 ] => 4
[ 4 ] => 08
[ 5 ] => 8
[ 6 ] =>
)7 years ago
Keys from multi dimensional array to simple array
Want to traverse an multi dimensional array and get the keys back in a single dimensional array? This will do the trick:
foreach( $array as $key => $val ) $flattenedKeysArray [] = $key ;
if( is_array ( $val ))
array_walk_keys ( $val , $key , $flattenedKeysArray );
>17 years ago
might be worth noting in the docs that not all associative (string) keys are a like, output of the follow bit of code demonstrates — might be a handy introduction to automatic typecasting in php for some people (and save a few headaches):
$r = array( «0» => «0» , «1» => «1» , «» => «2» , » » => «3» );
echo ‘how php sees this array: array(«0″=>»0″,»1″=>»1″,»» =>»2″,» «=>»3»)’ , «\n————\n» ;
var_dump ( $r ); print_r ( $r ); var_export ( $r );
echo «\n————\n» , ‘var_dump(«0″,»1″,»»,» «) = ‘ , «\n————\n» ;
var_dump ( «0» , «1» , «» , » » );
?>OUTPUTS:
12 years ago
Sorry for my english.
I wrote a function to get keys of arrays recursivelly.
function recursive_keys ( $input , $search_value = null )
$output = ( $search_value !== null ? array_keys ( $input , $search_value ) : array_keys ( $input )) ;
foreach( $input as $sub ) <
if( is_array ( $sub )) <
$output = ( $search_value !== null ? array_merge ( $output , recursive_keys ( $sub , $search_value )) : array_merge ( $output , recursive_keys ( $sub ))) ;
>
>
return $output ;
>
?>I hope it will be usefull
20 years ago
[Editor’s note: For a complete solution to the printing of complex structures or hashes, see the PEAR::Var_Dump package: http://pear.php.net/package-info.php?pacid=103 , use «pear install Var_Dump» to get it]
This function will print all the keys of a multidimensional array in html tables.
It will help to debug when you don?t have control of depths.function show_keys ( $ar )
foreach ( $ar as $k => $v )
if ( is_array ( $ar [ $k ])) <
show_keys ( $ar [ $k ]);
>// Multidimensional array ->
$arvore = array();
$arvore [ ‘1’ ] = array();
$arvore [ ‘1’ ][ ‘1.1’ ] = array( ‘1.1.1’ , ‘1.1.2’ , ‘1.1.3’ );
$arvore [ ‘1’ ][ ‘1.2’ ] = array( ‘1.2.1’ , ‘1.2.2’ , ‘1.2.3’ );
$arvore [ ‘1’ ][ ‘1.3’ ] = array( ‘1.3.1’ , ‘1.3.2’ , ‘1.3.3’ );
$arvore [ ‘2’ ] = array();
$arvore [ ‘2’ ][ ‘2.1’ ] = array( ‘2.1.1’ , ‘2.1.2’ , ‘2.1.3’ );
$arvore [ ‘2’ ][ ‘2.2’ ] = array( ‘2.2.1’ , ‘2.2.2’ , ‘2.2.3’ );
$arvore [ ‘2’ ][ ‘2.3’ ] = array( ‘2.3.1’ , ‘2.3.2’ , ‘2.3.3’ );
$arvore [ ‘3’ ] = array();
$arvore [ ‘3’ ][ ‘3.1’ ] = array( ‘3.1.1’ , ‘3.1.2’ , ‘3.1.3’ );
$arvore [ ‘3’ ][ ‘3.2’ ] = array( ‘3.2.1’ , ‘3.2.2’ , ‘3.2.3’ );
$arvore [ ‘3’ ][ ‘3.3’ ] = array( ‘3.3.1’ , ‘3.3.2’ =>array( ‘3.3.2.1’ , ‘3.3.2.2’ ), ‘3.3.3’ );
//
14 years agoHere’s a function I needed to collapse an array, in my case from a database query. It takes an array that contains key-value pairs and returns an array where they are actually the key and value.
function array_collapse ( $arr , $x , $y ) $carr = array();
while ( $el = current ( $arr )) $carr [ $el [ $x ] ] = $el [ $y ];
next ( $arr );
>
return $carr ;
>?>
Example usage (pseudo-database code):
$query = db_query ( ‘SELECT name, value FROM properties’ );
$result = db_returnAll ( $query );
/* This will return an array like so:
[
[‘name’ -> ‘color’, ‘value’ -> ‘blue’],
[‘name’ -> ‘style’, ‘value’ -> ‘wide-format’],
[‘name’ -> ‘weight’, ‘value’ -> 3.6],
[‘name’ -> ‘name’, ‘value’ -> ‘Waerdthing’]
]$propArr = array_collapse ( $result , ‘name’ , ‘value’ );
/* Now this array looks like:
[
[‘color’ -> ‘blue’],
[‘style’ -> ‘wide-format’],
[‘weight’ -> 3.6],
[‘name’ -> ‘Waerdthing’],
