PHP - Ermittelt den Schlüsselnamen des Array-Werts

157

Ich habe ein Array wie folgt:

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

Ich muss den Index von herausfinden, $arr['firstStringName']damit ich array_keys($arr)die Schlüsselzeichenfolge 'firstStringName'anhand ihres Index durchlaufen und zurückgeben kann . Wie kann ich das machen?

KopfschmerzCoder
quelle
Können Sie anhand eines Anwendungsfalls erläutern, was Sie erreichen möchten?
Nikc.org

Antworten:

331

Wenn Sie einen Wert haben und den Schlüssel finden möchten, verwenden Sie array_search()Folgendes:

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

$keyenthält nun den Schlüssel für den Wert 'a'(d. h. 'first').

zrvan
quelle
21
array_filter()kann verwendet werden, wenn Sie alle übereinstimmenden Ergebnisse anstelle nur des ersten übereinstimmenden zurückgeben müssen, da die Schlüssel erhalten bleiben.
Mike Lyons
5
Etwas, das ich hier erwähnenswert finde: Diese Lösung hat bei mir nicht funktioniert, bis ich herausfand, dass beim Sortieren des Arrays (sort ($ arr)) die Schlüsselnamen entfernt werden und auf die Standardindexwerte von 0,1,2 usw. zurückgegriffen wird. Wenn Sie also sortieren, verwenden Sie asort (asort ($ arr)). Dadurch bleiben die Schlüsselwerte erhalten. php.net/manual/en/function.asort.php
Rich701
63
key($arr);

gibt den Schlüsselwert für das aktuelle Array-Element zurück

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

Mark Baker
quelle
@AnthonyRutledge Dies gibt nur das zurück, auf das der interne Zeiger derzeit "zeigt". Wenn wir eine andere Referenz benötigen, sollten wir die zrvans-Methode verwenden, die speziell den angeforderten Wert ermittelt.
Parapluie
18

Wenn der Name dynamisch ist, müssen Sie so etwas haben

$arr[$key]

was bedeuten würde, dass $ key den Wert des Schlüssels enthält.

Sie können verwenden array_keys(), um ALLE Schlüssel eines Arrays abzurufen, z

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

würde dir geben

$x = array(0 => 'a', 1 => 'c');
Marc B.
quelle
16

Ja, Sie können infact PHP ist eine der wenigen Sprachen, die solche Unterstützung bieten.

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

}
Rajat Singhal
quelle
Dies ist keine relevante Antwort gemäß der Suche und zeitaufwändiger. Weniger effektive Codierung
Rishab
13

Wenn Sie Array-Elemente mit demselben Wert zurückgeben müssen, verwenden Sie die array_keys()Funktion

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

Hier ist eine weitere Option

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

Verwenden Sie array_keys()diese Option, um ein Array aller eindeutigen Schlüssel abzurufen.

Beachten Sie, dass auf ein Array mit benannten Schlüsseln wie Ihrem $arrauch mit numerischen Indizes wie z $arr[0].

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

jan
quelle
4

Sie können die Schlüsselfunktion von PHP verwenden, um den Schlüsselnamen zu erhalten:

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

wie hier: PHP: key - Manual

rtroulak
quelle