Dizi değerinin anahtar adını al


159

Aşağıdaki gibi bir dizi var:

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

Ben üzerinden $arr['firstStringName']döngü array_keys($arr)ve 'firstStringName'dizin tarafından anahtar dize dönmek mümkün böylece dizinini bulmak gerekir . Bunu nasıl yapabilirim?


Ulaşmaya çalıştığınız şeyin bir kullanım örneğiyle ayrıntıya girebilir misiniz?
nikc.org

Yanıtlar:


334

Bir değeriniz varsa ve anahtarı bulmak istiyorsanız, şu şekilde kullanın array_search():

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

$keyartık değer anahtarı 'a'(yani, 'first') içerecektir .


21
array_filter()anahtarları koruduğu için yalnızca ilk eşleşen sonuç yerine tüm eşleşen sonuçları döndürmeniz gerekirse kullanılabilir.
Mike Lyons

5
Burada dikkat çekmeye değer olduğunu düşündüğüm bir şey: dizi (sort ($ arr)) sıralamanın anahtar adlarını kaldırdığını ve varsayılan 0,1,2, vb dizin değerlerine başvurduğunu keşfetinceye kadar bu çözüm benim için çalışmadı. Sıralıyorsanız, asort (asort ($ arr)) kullanın. Bu, anahtar değerleri korur. php.net/manual/tr/function.asort.php
Rich701



18

Ad dinamikse, böyle bir şeye sahip olmalısınız

$arr[$key]

$ anahtarının anahtarın değerini içerdiği anlamına gelir.

array_keys()Bir dizinin TÜM anahtarlarını almak için kullanabilirsiniz , örn.

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

sana veririm

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

16

Evet php infact bu tür destek sağlayan birkaç dilde biridir ..

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

}

Bu arama başına ilgili cevap değildir ve daha fazla zaman alıcı .. Daha az etkili kodlama
Rishab

13

aynı değere sahip bir dizi öğesi döndürmeniz gerekiyorsa, array_keys()işlevi kullanın

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

11

İşte başka bir seçenek

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


4

anahtar adını almak için php anahtar işlevini kullanabilirsiniz:

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

burada olduğu gibi: PHP: anahtar - Manual

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.