PHP: Wie bekomme ich einen assoziativen Array-Schlüssel aus dem numerischen Index?


75

Wenn ich habe:

$array = array( 'one' =>'value', 'two' => 'value2' );

Wie bekomme ich die Saite onezurück $array[1]?


3
Mit anderen Worten, hier geht es darum, den n-ten Array-Schlüssel eines assoziativen Arrays zurückzugeben.
Sandeepan Nath

Antworten:


118

Das tust du nicht. Ihr Array hat keinen Schlüssel [1]. Du könntest:

  • Erstellen Sie ein neues Array, das die Schlüssel enthält:

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

    Aber der Wert "Eins" ist $newArray[0]nicht [1].
    Eine Abkürzung wäre:

    echo current(array_keys($array));
    
  • Holen Sie sich den ersten Schlüssel des Arrays:

     reset($array);
     echo key($array);
    
  • Holen Sie sich den Schlüssel, der dem Wert "Wert" entspricht:

    echo array_search('value', $array);
    

Dies hängt alles davon ab, was genau Sie tun möchten. Tatsache ist, [1]dass es in keiner Weise "eins" entspricht, wie Sie es drehen.


Ich denke, es ist das Beste, ein neues Array zu
erstellen

54
$array = array( 'one' =>'value', 'two' => 'value2' );

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

Welches wird ausgegeben:

one

17

Wenn Sie nur mit einem Schlüssel arbeiten möchten, können Sie dies mit einer einzigen Zeile erreichen, ohne ein Array für alle Schlüssel speichern zu müssen:

echo array_keys($array)[$i];

danke ... das ist alles, was für jeden in einer for-Schleife benötigt wird
Andrew

3
Hinweis: Dies erfordert PHP 5.4+ - Quelle 1 | Quelle 2 .
Pang

@Pang Gut zu wissen! Vielen Dank.
StarCrashr

8

Oder wenn Sie es in einer Schleife brauchen

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

2
Es gibt alle Tasten wieder. Der Topicstarter muss jedoch den Schlüssel anhand des numerischen Index erhalten. Es ist nicht dasselbe.
Alex Pliutau

Das ist mir klar. Aber angesichts der Tatsache, dass Topicstarter neu in PHP ist, könnte dies das gewesen sein, was er erreichen wollte und wusste einfach nichts von der Foreach-Syntax;)
Decko

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

0

Sie könnten es so machen:

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

Ich habe den Code noch nicht ausprobiert, bin mir aber ziemlich sicher, dass er funktionieren wird.

Viel Glück!


0

Wenn es das erste Element ist, dh $array[0]Sie können versuchen:

echo key($array);

Wenn es das zweite Element ist, dh $array[1]Sie können versuchen:

next($array);
echo key($array);

Ich denke, diese Methode sollte verwendet werden, wenn das erforderliche Element das erste, zweite oder höchstens dritte Element des Arrays ist. In anderen Fällen sollten Schleifen verwendet werden, da sonst die Lesbarkeit des Codes abnimmt.


0

Die Schlüsselfunktion hat mir geholfen und ist sehr einfach:

Die Funktion key () gibt einfach den Schlüssel des Array-Elements zurück, auf das der interne Zeiger gerade zeigt. Der Zeiger wird in keiner Weise bewegt. Wenn der interne Zeiger über das Ende der Elementliste hinaus zeigt oder das Array leer ist, gibt key () NULL zurück.

Beispiel:

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

Das obige Beispiel gibt Folgendes aus:

fruit1<br />
fruit4<br />
fruit5<br />

Bitte poste nicht nur einen Link; es könnte in Zukunft nicht funktionieren. Erweitern Sie stattdessen, was die Funktion tut und wie sie verwendet wird.
Andrew Arnold

-1

Die Schlüsselfunktion erweitert die Antwort von Ram Dane und ist eine alternative Möglichkeit, den Schlüssel des aktuellen Index des Arrays abzurufen. Sie können die folgende Funktion erstellen:

    function get_key($array, $index){
      $idx=0;
      while($idx!=$index  && next($array)) $idx++;
      if($idx==$index) return key($array);
      else return '';
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.