Php return all array keys

PHP array_keys() Function

PHP array_keys() function “returns either all the keys of an array or the subset of the keys.” Only the keys for that value are returned if a search value is specified. Otherwise, all the keys from an array are returned as the output. In addition, it determines if strict comparison (===) should be used during the search.

Syntax

array_keys(array,value,strict) 

Parameters

  1. array: It is a required parameter and specifies the array.
  2. value: It is an optional argument; you can specify a value, then only the keys with this value are returned.
  3. strict: It is used with the value parameter.

Return value

It returns an array containing all or a subset of keys in the input array depending upon the parameters passed.

Example 1: How to Use array_keys() function in PHP

 $data = ['a' => 'krunal', 'b' => 'ankit', 'd' => 'khushbu', 'f' => 'nehal', 'c' => 'rushabh', 'k' => 'krunal', 'n' => 'nehal']; $output = array_keys($data); print_r($output); 

Example 2

One thing to note about that if you have keys that are a long integer, such as ‘19214662291595’, they will be considered as such on the 64-bit system but will be of type string on the 32 bits system.

 $appKeys = array('19214662291595' => null, 'AppDividend291595' => null); foreach(array_keys($appKeys) as $key)  echo gettype($key)."\n"; >

array_keys in PHP

Here’s how to get the first key and last key. See the below code.

Let’s get the first key of an array. For that, we can use the PHP array_shift function.

 $data = ['a' => 'krunal', 'b' => 'ankit', 'd' => 'khushbu', 'f' => 'nehal', 'c' => 'rushabh', 'k' => 'krunal', 'n' => 'nehal']; $keys = array_keys($data); $firstKey = array_shift($keys); echo $firstKey."\n"; 

first key of an array

We can also get the last key. For that, we can use the PHP array_pop().

Example 3: Using the strict parameter

 $app = array(10,20,30,21); print_r(array_keys($app,"21",true));

We compare the string 21 to the integer 21 in the above code. The value is the same, but the data type is different.

Also, we are comparing the values under the strict flag. So the output will not be matched, and we will see an empty array.

Example 4: Passing a false parameter

If we pass the false parameter, it will give us the key of an array.

 $app = array(10,20,30,21); print_r(array_keys($app,"21",false));

Источник

array_keys

array_keys() returns the keys, numeric and string, from the array .

If a filter_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.

Parameters

An array containing keys to return.

If specified, then only keys containing this value are returned.

Determines if strict comparison (===) should be used during the search.

Return Values

Returns an array of all the keys in array .

Examples

Example #1 array_keys() example

$array = array( 0 => 100 , «color» => «red» );
print_r ( array_keys ( $array ));

$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 ));
?>

The above example will output:

Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size )

See Also

  • array_values() — Return all the values of an array
  • array_combine() — Creates an array by using one array for keys and another for its values
  • array_key_exists() — Checks if the given key or index exists in the array
  • array_search() — Searches the array for a given value and returns the first corresponding key if successful
  • Array Functions
    • 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

    Источник

    array_keys

    array_keys() returns the keys, numeric and string, from the array .

    If a filter_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.

    Parameters

    An array containing keys to return.

    If specified, then only keys containing this value are returned.

    Determines if strict comparison (===) should be used during the search.

    Return Values

    Returns an array of all the keys in array .

    Examples

    Example #1 array_keys() example

    $array = array( 0 => 100 , «color» => «red» );
    print_r ( array_keys ( $array ));

    $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 ));
    ?>

    The above example will output:

    Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size )

    See Also

    • array_values() — Return all the values of an array
    • array_combine() — Creates an array by using one array for keys and another for its values
    • array_key_exists() — Checks if the given key or index exists in the array
    • array_search() — Searches the array for a given value and returns the first corresponding key if successful

    User Contributed Notes 28 notes

    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 🙂

    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 ));
    ?>

    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()
    )

    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 0

    —-
    expected to see:
    dude dude dude

    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.

    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) \ empty

    # 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:

    $a = array(
    «first_index» => «This is the first element» ,
    true => 3 ,
    false => 2 ,
    4.5 => ‘Something’ ,
    «08» => 5 ,
    «8» => 6 ,
    NULL => ‘Null key’
    );

    Array
    (
    [ 0 ] => first_index
    [ 1 ] => 1
    [ 2 ] => 0
    [ 3 ] => 4
    [ 4 ] => 08
    [ 5 ] => 8
    [ 6 ] =>
    )

    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 );
    >

    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:

    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

    Here’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’],

    Источник

    Читайте также:  Мультиклассы
Оцените статью