2012-01-04 10 views
84

Ho una matrice come il seguente:PHP - Get nome della chiave del valore di matrice

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']; 

Ho bisogno di scoprire l'indice di $arr['firstStringName'] in modo che io sono in grado di scorrere array_keys($arr) e restituire la stringa chiave 'firstStringName' dal suo indice. Come lo posso fare?

+0

Si può elaborare con un uso caso di ciò che stai cercando di ottenere? –

risposta

168

Se si dispone di un valore e desidera trovare la chiave, utilizzare array_search() in questo modo:

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

$key conterrà ora la chiave per il valore 'a' (ovvero, 'first').

+10

'array_filter()' può essere utilizzato se è necessario restituire tutti i risultati corrispondenti invece del solo corrispondente, in quanto conserva le chiavi. –

+0

awesomeeeeeeeee –

+0

Qualcosa che vale la pena notare qui: questa soluzione non funzionava per me, finché non ho scoperto che l'ordinamento dell'array (sort ($ arr)) rimuove i nomi delle chiavi e ricorre all'intervallo predefinito 0,1,2, ecc. valori. Quindi, se stai ordinando, usa asort (asort ($ arr)). Questo mantiene i valori chiave. http://php.net/manual/en/function.asort.php – Rich701

6

utilizzare array_keys() per ottenere una matrice di tutte le chiavi univoche.

Si noti che è possibile accedere a una matrice con chiavi denominate come $ arr con indici numerici, ad esempio $ arr [0].

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

13

Se il nome è dinamica, allora è necessario avere qualcosa di simile

$arr[$key] 

che 'D significa che $ chiave contiene il va lue della chiave.

È possibile utilizzare array_keys() per ottenere TUTTE le chiavi di un array, ad es.

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

darebbe

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

Sì, è possibile infact php è una delle poche lingue che forniscono tale sostegno ..

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

} 
26

Se ho capito bene, non è possibile utilizzare semplicemente:

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

Vedi PHP manual

+0

Modificato. Grazie Marco! – rwb

+0

Penso che stia cercando la funzione php array_search - http://php.net/manual/en/function.array-search.php – Junior

2

se è necessario restituire un elementi di array con lo stesso valore, utilizzare la funzione array_keys()

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

è possibile utilizzare la funzione fondamentale di php per ottenere il nome della chiave:

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

come qui: PHP:key - Manual

2

Ecco un'altra opzione

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