2009-12-23 10 views
111

Meine assoziatives Array:Wie durchläuft man ein assoziatives Array und bekommt den Schlüssel?

$arr = array(
    1 => "Value1", 
    2 => "Value2", 
    10 => "Value10" 
); 

Verwendung des folgenden Codes wird $v mit $arr 's

foreach($arr as $v){ 
    echo($v); // Value1, Value2, Value10 
} 

Werte Wie erhalte ich $arr' gefüllt s Tasten statt?

foreach(.....){ 
    echo($k); // 1, 2, 10 
} 
+3

By the way, sind Sie Kommas in dem Feld fehlt. –

+1

Letztes Komma ist optional, nicht wahr? –

Antwort

233

Sie tun können:

foreach ($arr as $key => $value) { 
echo $key; 
} 

Wie in PHP docs beschrieben.

+2

@codaddict, Ist die Reihenfolge der 'foreach' garantiert dieselbe Reihenfolge wie in der Deklaration? – Pacerier

53

Wenn Sie array_keys() verwenden, wird PHP geben Sie ein Array mit nur den Schlüssel gefüllt:

$keys = array_keys($arr); 
foreach($keys as $key) { 
    echo($key); 
} 

Alternativ können Sie dies tun:

foreach($arr as $key => $value) { 
    echo($key); 
} 
+1

In der ersten Lösung gibt meine IDE (Netbeans) keine Warnung, dass die $ value-Variable nicht verwendet wird, also hier ist + 1 –

+2

welche ist schneller? –

+0

@TrevorJohns, Ist die Bestellung garantiert? – Pacerier

4

Im Folgenden wird Ihnen erlauben, um gleichzeitig Schlüssel und Wert zu erhalten.

foreach ($arr as $key => $value) 
{ 
    echo($key); 
} 
10
foreach($array as $k => $v) 

Wo k $ ist der Schlüssel und v $ ist der Wert

Oder wenn Sie brauchen nur die Schlüssel verwenden array_keys()

0
foreach($arr as $key=>$value){ 
    echo($key); // key 
} 
1

Oh ich fand es in der PHP manual.

foreach ($array as $key => $value){ 
    statement 
} 

der Schlüssel des aktuellen Elements wird auf die Variable $ key auf jeder Schleife zugeordnet werden.

1

Verwenden $key => $val die Schlüssel zu erhalten:

<?php 

$arr = array(
    1 => "Value1", 
    2 => "Value2", 
    10 => "Value10", 
); 

foreach ($arr as $key => $val) { 
    print "$key\n"; 
} 

?> 
3

Während wohl weniger klar ist, ist diese Methode um etwa einen Faktor von etwa 3,5 schneller (zumindest auf der Box habe ich zu testen)

$foo = array(
    1 => "Value1", 
    2 => "Value2", 
    10 => "Value10" 
); 
while($bar = each($foo)){ 
    echo $bar[0] . " => " . $bar[1]; 
} 

Ich würde mir vorstellen, dass dies aufgrund der Tatsache ist, dass die Foreach das gesamte Array kopiert, bevor es darüber iteriert.

7

Ich verwende die folgende Schleife den Schlüssel und den Wert aus einem assoziativen Array

foreach ($array as $key => $value) 
{ 
    echo "<p>$key = $value</p>"; 
} 
+2

Die einzige Antwort, die klar und prägnant beschreibt, wie man Schlüssel und Wert in der Schleife verwendet! – SharpC

19

Niemand mit regelmäßiger for Schleife beantwortet zu bekommen?Manchmal finde ich es besser lesbar und bevorzugen for über foreach
Also hier ist es:

$array = array('key1' => 'value1', 'key2' => 'value2'); 

$keys = array_keys($array); 

for($i=0; $i < count($keys); ++$i) { 
    echo $keys[$i] . ' ' . $array[$keys[$i]] . "\n"; 
} 

/* 
    prints: 
    key1 value1 
    key2 value2 
*/ 
+1

Dies ist unter bestimmten Umständen nützlich, wenn foreach aus unerklärlichen Gründen ausfällt. Gut, immer mindestens zwei Möglichkeiten zu haben, Dinge zu tun. – liljoshu

+1

Es gibt keine "unerklärlichen" Gründe, wenn es um Computer geht. – JDrake

+1

Auch nützlich, wenn Sie zwei aufeinanderfolgende Array-Elemente miteinander kombinieren möchten. i + = 2 und dann mit $ array [$ keys [$ i]]. "_". $ array [$ keys [$ i + 1]] Nur jemand anderes hat das gleiche Problem –

1
<?php 
$names = array("firstname"=>"maurice", 
       "lastname"=>"muteti", 
       "contact"=>"7844433339"); 

foreach ($names as $name => $value) { 
    echo $name." ".$value."</br>"; 
} 

print_r($names); 
?> 
Verwandte Themen