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?


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').


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


@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


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

16

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

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

}

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

11

Ini pilihan lain

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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.