PHP - pobierz nazwę klucza wartości tablicy


157

Mam tablicę w następujący sposób:

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

Muszę znaleźć indeks, $arr['firstStringName']aby móc przechodzić przez pętlę array_keys($arr)i zwracać ciąg klucza 'firstStringName'według jego indeksu. Jak mogę to zrobić?


Czy możesz rozwinąć przypadek użycia tego, co próbujesz osiągnąć?
nikc.org

Odpowiedzi:


332

Jeśli masz wartość i chcesz znaleźć klucz, użyj w array_search()ten sposób:

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

$keybędzie teraz zawierać klucz dla wartości 'a'(czyli 'first').


21
array_filter()może zostać użyty, jeśli chcesz zwrócić wszystkie pasujące wyniki zamiast tylko pierwszego pasującego, ponieważ zachowuje klucze.
Mike Lyons

5
Myślę, że warto tu zwrócić uwagę: to rozwiązanie nie działało, dopóki nie odkryłem, że sortowanie tablicy (sort ($ arr)) usuwa nazwy kluczy i odwołuje się do domyślnych wartości indeksu 0,1,2 itd. Jeśli więc sortujesz, użyj asort (asort ($ arr)). Pozwala to zachować kluczowe wartości. php.net/manual/en/function.asort.php
Rich701



18

Jeśli nazwa jest dynamiczna, musisz mieć coś takiego

$arr[$key]

co oznaczałoby, że $ klucz zawiera wartość klucza.

Możesz użyć, array_keys()aby uzyskać WSZYSTKIE klucze tablicy, np

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

dałby ci

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

16

Tak, rzeczywiście, php jest jednym z niewielu języków, które zapewniają takie wsparcie.

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

}

To nie jest trafna odpowiedź jak na wyszukiwanie i bardziej czasochłonna. Mniej efektywne kodowanie
Rishab

13

jeśli chcesz zwrócić elementy tablicy o tej samej wartości, użyj array_keys()funkcji function

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

11

Oto inna opcja

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


4

możesz użyć kluczowej funkcji php, aby uzyskać nazwę klucza:

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

jak tutaj: PHP: klucz - Instrukcja

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.