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 Comentarios

  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.

Dejar respuesta

Please enter your comment!
Please enter your name here