2010-11-04 13 views

cevap

91

bunu gerekiyorsa yapamaz. Dizininizde bir anahtar yok [1]. Yapabilirdin:

  • anahtarlarını içeren yeni bir dizi, Make:

    $newArray = array_keys($array); 
    echo $newArray[0]; 
    

    Ama değer "bir" $newArray[0] değil [1] yer almaktadır.
    bir kısayol olacaktır:

    echo array_search('value', $array); 
    
: "değerine" değerine karşılık gelen anahtar al

reset($array); 
echo key($array); 
  • :

    echo current(array_keys($array)); 
    
  • dizinin ilk anahtar al

    Bu, tam olarak ne yapmak istediğinize bağlı olarak değişir. Gerçek şu ki, [1], hangi yolla açtığınıza "tek" karşılık gelmiyor.

  • +0

    Bence yeni dizi yapmak en iyi olduğunu düşünüyorum –

    48
    $array = array('one' =>'value', 'two' => 'value2'); 
    
    $allKeys = array_keys($array); 
    echo $allKeys[0]; 
    

    Hangi çıktısı:

    one 
    
    +0

    @KennyTM (Sonuç: http://www.ideone.com/pFh0o) ölü bir bağlantıdır –

    3

    Yoksa bir döngü

    foreach ($array as $key => $value) 
    { 
        echo $key . ':' . $value . "\n"; 
    } 
    //Result: 
    //one:value 
    //two:value2 
    
    +1

    Tüm anahtarları yankılanıyor. Ancak topictarter'ın sayısal dizine göre anahtar alması gerekiyor. Aynı değil. – pltvs

    +0

    Bunun farkındayım.Ama konu başlatıcı php için yeni olduğu göz önüne alındığında, bu elde etmek için çalışıyordu ve sadece foreach sözdizimi bilmiyordum olabilirdi;) – Decko

    2
    $array = array('one' =>'value', 'two' => 'value2'); 
    $keys = array_keys($array); 
    echo $keys[0]; // one 
    echo $keys[1]; // two 
    
    0

    Sen bu şekilde yapacağım:

    function asoccArrayValueWithNumKey(&$arr, $key) { 
        if (!(count($arr) > $key)) return false; 
        reset($array); 
        $aux = -1; 
        $found = false; 
        while (($auxKey = key($array)) && !$found) { 
         $aux++; 
         $found = ($aux == $key); 
        } 
        if ($found) return $array[$auxKey]; 
        else return false; 
    } 
    
    $val = asoccArrayValueWithNumKey($array, 0); 
    $val = asoccArrayValueWithNumKey($array, 1); 
    etc... 
    

    kodu uğraş mı, ama işe yarayacak eminim.

    İyi şanslar!

    0

    key fonksiyonu bana yardımcı oldu ve sadece, tek bir çizgi ile bunu gerçekleştirmek olabilecek tuşların tümü için bir dizi saklamak zorunda kalmadan özellikle bir anahtarla çalışmayı planlıyorsanız

    +0

    Lütfen sadece bir bağlantı; Gelecekte çalışmayabilir. Bunun yerine, işlevin ne yaptığını ve nasıl kullanılacağını genişletin. –

    12

    çok basit:

    echo array_keys($array)[$i]; 
    
    +0

    Teşekkürler ... bu, for döngüsü içindeki herkes için gerekli olan tüm – Andrew

    +2

    Not: Bu PHP 5.4+ gerektirir - [kaynak 1] (http://php.net/manual/en/language.types.array.php# language.types.array.syntax.accessing) | [kaynak 2] (https://wiki.php.net/rfc/functionarraydereferencing). – Pang

    -1

    Ram Dane'in yanıtında genişleyen key işlevi, dizinin geçerli dizininin anahtarını almanın alternatif bir yoludur. Aşağıdaki işlevi oluşturabilirsiniz:

    function get_key($array, $index){ 
         $idx=0; 
         while($idx!=$index && next($array)) $idx++; 
         if($idx==$index) return key($array); 
         else return ''; 
        }