PHP - Dapatkan nama kunci dari nilai array

158

Saya memiliki array sebagai berikut:

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

Saya perlu mencari tahu indeks $arr['firstStringName']sehingga saya bisa mengulang array_keys($arr)dan mengembalikan kunci string 'firstStringName'dengan indeksnya. Bagaimana saya bisa melakukan itu?

headacheCoder
sumber
Bisakah Anda menguraikan kasus penggunaan dari apa yang Anda coba capai?
nikc.org

Jawaban:

333

Jika Anda memiliki nilai dan ingin menemukan kunci, gunakan array_search()seperti ini:

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

$keysekarang akan berisi kunci untuk nilai 'a'(yaitu, 'first').

zrvan
sumber
21
array_filter()dapat digunakan jika Anda harus mengembalikan semua hasil yang cocok, bukan hanya yang cocok pertama, karena mempertahankan kunci.
Mike Lyons
5
Sesuatu yang saya pikir perlu dicatat di sini: solusi ini tidak bekerja untuk saya, sampai saya menemukan bahwa menyortir array (sort ($ arr)) menghapus nama-nama kunci, dan resor ke default 0,1,2, nilai indeks dll. Jadi jika Anda menyortir, gunakan asort (asort ($ arr)). Ini mempertahankan nilai-nilai kunci. php.net/manual/en/function.asort.php
Rich701
63
key($arr);

akan mengembalikan nilai kunci untuk elemen array saat ini

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

Mark Baker
sumber
@AnthonyRutledge Ini akan mengembalikan hanya apa yang pointer internal saat ini "menunjuk". Jika kita membutuhkan referensi lain, maka kita harus menggunakan metode zrvans, yang mencari nilai yang diminta, secara khusus.
Parapluie
39

Jika saya mengerti dengan benar, tidak bisakah Anda menggunakan:

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

Lihat manual PHP

rwb
sumber
Saya pikir dia sedang mencari fungsi php array_search
Junior
18

Jika namanya dinamis, maka Anda harus memiliki sesuatu seperti

$arr[$key]

yang berarti $ key berisi nilai kunci.

Anda dapat menggunakan array_keys()untuk mendapatkan SEMUA kunci array, misalnya

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

akan memberimu

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

Ya, Anda dapat membuat php adalah salah satu dari sedikit bahasa yang memberikan dukungan seperti itu ..

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

}
Rajat Singhal
sumber
Ini bukan jawaban yang relevan sesuai pencarian dan lebih memakan waktu .. Pengodean yang kurang efektif
Rishab
13

jika Anda perlu mengembalikan elemen array dengan nilai yang sama, gunakan array_keys()fungsi

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

Ini pilihan lain

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

gunakan array_keys()untuk mendapatkan larik semua kunci unik.

Perhatikan bahwa array dengan kunci bernama seperti Anda $arrjuga dapat diakses dengan indeks numerik, seperti $arr[0].

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

jan
sumber
4

Anda dapat menggunakan fungsi kunci dari php untuk mendapatkan nama kunci:

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

seperti di sini: PHP: key - Manual

rtroulak
sumber