php: obtenga el índice numérico de la matriz asociativa

Tengo una matriz asociativa y necesito encontrar la posición numérica de una clave. Podría recorrer la matriz de forma manual para encontrarla, pero ¿hay alguna forma mejor de comstackr en PHP?

$a = array( 'blue' => 'nice', 'car' => 'fast', 'number' => 'none' ); // echo (find numeric index of $a['car']); // output: 1 

 echo array_search("car",array_keys($a)); 
 $blue_keys = array_search("blue", array_keys($a)); 

http://php.net/manual/en/function.array-keys.php

 function arrayValuePosition($value, $array) { return array_search($value, array_keys($array)); } 
 $a = array( 'blue' => 'nice', 'car' => 'fast', 'number' => 'none' ); var_dump(array_search('car', array_keys($a))); var_dump(array_search('blue', array_keys($a))); var_dump(array_search('number', array_keys($a)));
$a = array( 'blue' => 'nice', 'car' => 'fast', 'number' => 'none' ); var_dump(array_search('car', array_keys($a))); var_dump(array_search('blue', array_keys($a))); var_dump(array_search('number', array_keys($a))); 

una solución que se me ocurrió … probablemente bastante ineficiente en comparación con la solución de Fosco:

  protected function getFirstPosition(array$array, $content, $key = true) { $index = 0; if ($key) { foreach ($array as $key => $value) { if ($key == $content) { return $index; } $index++; } } else { foreach ($array as $key => $value) { if ($value == $content) { return $index; } $index++; } } } 

Si bien la respuesta de Fosco no es incorrecta, hay un caso que se debe considerar con este: arreglos mixtos. Imagina que tengo una matriz como esta:

 $a = array( "nice", "car" => "fast", "none" ); 

Ahora, PHP permite este tipo de syntax, pero tiene un problema: si ejecuto el código de Fosco obtengo 0 que es incorrecto para mí, pero ¿por qué sucede esto?
Porque al hacer comparaciones entre cadenas y enteros PHP convierte cadenas en enteros (y esto es un poco estúpido en mi opinión), así que cuando array_search() busca el índice se detiene en el primero porque aparentemente ("car" == 0) es cierto
Establecer array_search() en modo estricto no resolverá el problema porque entonces array_search("0", array_keys($a)) devolverá false incluso si existe un elemento con índice 0.
Entonces mi solución simplemente convierte todos los índices de array_keys() en cadenas y luego los compara correctamente:

 echo array_search("car", array_map("strval", array_keys($a))); 

Imprime 1 que es correcto