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

9 Answers

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

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; 
0
$foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke'); foreach($foo as $key => $item) { echo $item.' is begin with ('.$key.')'; } 
0
  $array = array(0 => 100, "color" => "red"); print_r(array_keys($array));  
0

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

0

If you want to be in a foreach loop, then foreach($array as $key => $value) is definitely the recommended approach. Take advantage of simple syntax when a language offers it.

Another way to use key($array) in a foreach loop is by using next($array) at the end of the loop, just make sure each iteration calls the next() function (in case you have complex branching inside the loop)

Try this

foreach(array_keys($array) as $nmkey) { echo $nmkey; } 
0

Here is a generic solution that you can add to your Array library. All you need to do is supply the associated value and the target array!

PHP Manual: array_search() (similiar to .indexOf() in other languages)

public function getKey(string $value, array $target) { $key = array_search($value, $target); if ($key === null) { throw new InvalidArgumentException("Invalid arguments provided. Check inputs. Must be a (1) a string and (2) an array."); } if ($key === false) { throw new DomainException("The search value does not exists in the target array."); } return $key; } 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy