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.