2012-01-04 22 views
84

tengo una matriz como la siguiente:PHP - Obtener el nombre clave del valor de matriz

function example() { 
    /* some stuff here that pushes items with 
     dynamically created key strings into an array */ 

    return array(// now lets pretend it returns the created array 
     'firstStringName' => $whatEver, 
     'secondStringName' => $somethingElse 
    ); 
} 

$arr = example(); 

// now I know that $arr contains $arr['firstStringName']; 

necesito para averiguar el índice de $arr['firstStringName'] por lo que yo soy capaz de recorrer array_keys($arr) y devolver la cadena de clave 'firstStringName' por su índice. ¿Cómo puedo hacer eso?

+0

puedes contar con un uso caso de lo que estás tratando de lograr? –

Respuesta

168

Si usted tiene un valor y desea encontrar la clave, use array_search() de esta manera:

$arr = array ('first' => 'a', 'second' => 'b',); 
$key = array_search ('a', $arr); 

$key ahora contendrá la clave para el valor 'a' (es decir, 'first').

+10

'array_filter()' se puede usar si necesita devolver todos los resultados coincidentes en lugar de solo la primera coincidencia, ya que conserva las claves. –

+0

awesomeeeeeeeee –

+0

Algo que vale la pena señalar aquí: esta solución no me funcionaba, hasta que descubrí que ordenar la matriz (sort ($ arr)) elimina los nombres de las teclas y recurre al índice predeterminado de 0,1,2, etc. valores. Entonces, si está ordenando, use asort (asort ($ arr)). Esto mantiene los valores clave. http://php.net/manual/en/function.asort.php – Rich701

6

use array_keys() para obtener una matriz de todas las claves únicas.

Tenga en cuenta que una matriz con claves con nombre como su $ arr también se puede acceder con índices numéricos, como $ arr [0].

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

13

Si de la dinámica de nombres, entonces debe tener algo como

$arr[$key] 

cuales significa que esa clave $ contiene el va lue de la clave.

Puede usar array_keys() para obtener TODAS las teclas de una matriz, p.

$arr = array('a' => 'b', 'c' => 'd') 
$x = array_keys($arr); 

que

$x = array(0 => 'a', 1 => 'c'); 
10

Sí se puede infact php es uno de los pocos lenguajes que proporcionan este tipo de apoyo daría ..

foreach($arr as $key=>$value) 
{ 

} 
26

si he entendido bien, ¿no puede simplemente utilizar:

foreach($arr as $key=>$value) 
{ 
    echo $key; 
} 

Ver PHP manual

+0

Editado. Gracias Mark! – rwb

+0

Creo que está buscando la función array_search php - http://php.net/manual/en/function.array-search.php – Junior

2

si tiene que devolver una elementos de matriz con el mismo valor, use la función array_keys()

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

puede utilizar la función clave de PHP para obtener el nombre de clave:

<?php 
    $array = array(
    'fruit1' => 'apple', 
    'fruit2' => 'orange', 
    'fruit3' => 'grape', 
    'fruit4' => 'apple', 
    'fruit5' => 'apple'); 

    // this cycle echoes all associative array 
    // key where value equals "apple" 
    while ($fruit_name = current($array)) { 
     if ($fruit_name == 'apple') { 
     echo key($array).'<br />'; 
     } 
    next($array); 
    } 
?> 

como aquí: PHP:key - Manual

2

Aquí es otra opción

$array = [1=>'one', 2=>'two', 3=>'there']; 
$array = array_flip($array); 
echo $array['one']; 
Cuestiones relacionadas