PHP - Ottieni il nome chiave del valore dell'array


158

Ho un array come il seguente:

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

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


Puoi elaborare un caso d'uso di ciò che stai cercando di ottenere?
nikc.org,

Risposte:


333

Se hai un valore e vuoi trovare la chiave, usa in array_search()questo modo:

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

$keyconterrà ora la chiave per value 'a'(ovvero, 'first').


21
array_filter()può essere utilizzato se è necessario restituire tutti i risultati corrispondenti anziché solo il primo corrispondente, poiché conserva le chiavi.
Mike Lyons,

5
Qualcosa che ritengo degno di nota qui: questa soluzione non funzionava per me, fino a quando non ho scoperto che l'ordinamento dell'array (sort ($ arr)) rimuove i nomi delle chiavi e ricorre ai valori di indice predefiniti 0,1,2, ecc. Quindi, se stai ordinando, usa asort (asort ($ arr)). Ciò mantiene i valori chiave. php.net/manual/en/function.asort.php
Rich701

63
key($arr);

restituirà il valore chiave per l'elemento array corrente

http://uk.php.net/manual/en/function.key.php


@AnthonyRutledge Restituirà solo ciò che il puntatore interno è attualmente "puntato". Se abbiamo bisogno di un altro riferimento, allora dovremmo usare il metodo zrvans, che caccia il valore richiesto, in particolare.
Parapluie,


18

Se il nome è dinamico, allora devi avere qualcosa di simile

$arr[$key]

il che significherebbe che $ key contiene il valore della chiave.

Puoi usare array_keys() per ottenere TUTTE le chiavi di un array, ad es

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

ti darei

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

16

Sì, puoi infatti php è una delle poche lingue che forniscono tale supporto.

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

}

Questa non è una risposta pertinente come da ricerca e richiede più tempo. Codifica meno efficace
Rishab,

13

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

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

11

Ecco un'altra opzione

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


4

puoi usare la funzione chiave di php per ottenere il nome 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: chiave - Manuale

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.