Cómo obtener la posición de una llave dentro de una matriz

Aceptar, por lo que es necesario tomar la posición de ‘bla’ dentro de esta matriz (posición que no siempre será el mismo). Por ejemplo:

$array = (
    'a' => $some_content,
    'b' => $more_content,
    'c' => array($content),
    'blah' => array($stuff),
    'd' => $info,
    'e' => $more_info,
);

Así, me gustaría ser capaz de devolver el número de donde el ‘bla’ clave se encuentra dentro de la matriz. En este escenario, debe devolver 3. ¿Cómo puedo hacer esto rápidamente? Y sin afectar a los $array array en todo.

InformationsquelleAutor SoLoGHoST | 2011-09-18

4 Kommentare

  1. 86
    $i = array_search('blah', array_keys($array));
    • A veces las respuestas son tan obvias… 🙂
  2. 5

    Si usted sabe que la clave existe:

    PHP 5.4 (Demo):

    echo array_flip(array_keys($array))['blah'];

    PHP 5.3:

    $keys = array_flip(array_keys($array));
    echo $keys['blah'];

    Si usted no sabe la clave existe, se puede comprobar con isset:

    $keys = array_flip(array_keys($array));
    echo isset($keys['blah']) ? $keys['blah'] : 'not found' ;

    Esto es simplemente como array_search pero hace uso de la mapa que ya existe dentro de cualquier matriz. No puedo decir si es realmente mejor que array_search, esto podría depender de la situación, por lo que sólo otra alternativa.

    • Sí, sé que es un hecho que la clave siempre va a existir! En ese caso, sería más rápido que el uso de array_search?
    • Permítanme responder de esta manera: mientras array_flip es más rápido que array_search, que es :). La clave de la búsqueda de sí mismo es más rápido que array_search.
    • Me gusta la idea, pero array_search es más rápido según mis pruebas (al menos en PHP 5.3).
    • Depende de si usted necesita muchas búsquedas en la misma matriz… Si usted busca para – decir – todas las teclas, array_search es O(n2), con array_flip que sería O(n). Si usted necesita un par de búsquedas de ir a por búsqueda. (para ambas soluciones usted, por supuesto, guardar el intermedio de la matriz en otra variable en el caso de necesitar varias búsquedas, en aras de la perf)
  3. 0

    $keys=array_keys($array); le dará una matriz que contiene las claves de $array

    Así, array_search('blah', $keys); le dará el índice de blah en $keys y por lo tanto, $array

  4. -3

    Usuario array_search (doc). Es decir, `$index = array_search(‘bla’, $array)

    • No ! Como el doc dice: Busca en la matriz para un determinado valor, no clave a medida que el usuario pide.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea