up vote 0 down vote favorite

Hi everybody,

I am sure that this is super easy and built-in function in PHP, but I have yet not seen it.

Here's what I am doing for the moment:

forEach($array as $key => $value) {
    echo $key; // Would output "subkey" in the example array
    print_r($value);
}

Could I do something like the following instead and thereby save myself from writing "$key => $value" in every foreach loop? (psuedocode)

forEach($array as $subarray) {
    echo arrayKey($subarray); // Will output the same as "echo $key" in the former example ("subkey"
    print_r($value);
}

Thanks!

The array:

Array
(
    [subKey] => Array
        (
            [value] => myvalue
        )

)
flag

Whats wrong with foreach($array as $key => $value)? Or, asked the other way around, what's the point using foreach($array as $value) when you actually need $key somewhere down the road? – Tomalak Jul 23 at 12:10
I just thought it could be a good idea to get the key in a quick way – Industrial Jul 23 at 12:12
But you do get it in a quick way with foreach($array as $key => $value)... :-) Or is the situation not that you are in a foreach loop? – Tomalak Jul 23 at 12:14
I am in a foreach loop for sure, but what i've thought about was to not change the foreach statement, but just printing out the key. – Industrial Jul 23 at 12:21
@Industrial: Every function call you could make would be less efficient than simply changing to the appropriate foreach loop construct. – Tomalak Jul 23 at 13:48

4 Answers

up vote 0 down vote accepted

You can use key():

<?php
$array = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "four" => 4
);

while($element = current($array)) {
    echo key($array)."\n";
    next($array);
}
?>
link|flag
Hi! But key doesnt work in a foreach, right? – Industrial Jul 23 at 12:49
Yes, that is correct. You need to use while-loop for key(). – vtorhonen Jul 23 at 12:59
up vote 2 down vote

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

link|flag
up vote 1 down vote

Use the array_search function.

Example from php.net

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
link|flag
Hi, updated my original post with an array example. Thanks! – Industrial Jul 23 at 12:03
up vote 0 down vote

If it IS a foreach loop as you have described in the question, using $key => $value is fast and efficient.

link|flag

Your Answer

get an OpenID
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.