2016-05-12 10 views
1

Das ist mein assoziatives Array:Wie kann ich nur drei Elemente meines assoziativen Arrays anzeigen?

$vetor = array(
"Name"=> "myName", 
"Tel"=> "555-2020", 
"Age"=> "60", 
"Gender"=> "Male" 
); 

Wie kann ich die Schleife for nur drei Elemente zeigen können?

Ich versuchte dies:

for($i=0; $i<=2; $i++){ 
echo $vetor[$i]."<br>";    
} 

Aber ohne Erfolg. Wie kann ich das machen?

+1

Muss es eine 'for' Schleife für diese Hausaufgaben sein, oder kann es sein, ein' foreach' – RiggsFolly

+0

@RiggsFolly den Fehler angezeigt: 'Nicht definierte Offset: 0 ', Undefined offset: 1 .... ' – GtGtGt

+0

Die' foreach' zeigt den gesamten Inhalt von 'array' an. Ich will das nicht. Ich möchte nur drei Ergebnisse anzeigen. – GtGtGt

Antwort

6

Sie falsche Indizes beziehen, weil das erste Element auf dem Array, das Sie wie etwas zu tun haben, zu verweisen: $ vetor [ "Name"] statt $ vetor [0]

$i = 0; 
foreach($vetor as $key => $value){ 
    if($i == 2){ break; } 
    echo $value; 
    $i++; 
} 
+0

Das ist eine Art von was ich bekommen habe, als ich [mein erster Kommentar] gemacht habe (http://stackoverflow.com/questions/37190864/how-i-can-show-only-three -elementigen-of-my-assoziativ-Array-mit-for? noredirect = 1 # comment61914382_37190864) – RiggsFolly

+0

Es war genau das, was ich frage mich, wie denn zu machen, wenn ich eine 100 haben, 200.300 Elemente .. ich das ändern, nur '$ ich und so kann ich die Menge anzeigen, die ich will. Vielen Dank! – GtGtGt

1

foreach mehr Sinn macht Für ein Array wie dieses, aber wenn Sie aus irgendeinem Grund for verwenden möchten, besteht das Problem darin, dass das Array keine sequenziellen numerischen Indizes hat, die Ihrer Schleifeninkrementvariablen entsprechen. Es gibt jedoch andere Möglichkeiten, die ersten drei Elemente zu durchlaufen, ohne zu wissen, was die Indizes sind.

// this first step may not be necessary depending on what's happened to the the array so far 
reset($vetor); 

$times = min(3, count($vetor)); 

for ($i = 0; $i < $times; $i++) { 
    echo current($vetor).'<br>'; 
    next($vetor); 
} 

Wenn next den internen Array-Zeiger über das letzte Array-Element bewegt, wird current($vetor)false zurückkehren, so $times Einstellung min mit der Anzahl von Malen mit Sie und der Array Zahl wollen Sie verhindern, dass mehrmals Looping als es sind Elemente im Array.


Ein anderer Weg, wenn Sie mich nicht, was die Schlüssel sind, ist array_values zu verwenden, um die Schlüssel von Arrays in Zahlen zu konvertieren.

$vetor = array_values($vetor); 
for ($i=0; $i < 3; $i++) { 
    echo $vetor[$i].'<br>'; 
} 
+0

Das sind andere Möglichkeiten, auch hier sicher hahah, danke! Eine Frage: Um die assoziativen Arrays zu drucken, muss ich Array-Schlüssel immer in Zahlen umwandeln. – GtGtGt

+1

Wenn Sie 'for' anstelle von' foreach' in einem Array mit String-Schlüsseln (oder nicht aufeinanderfolgenden numerischen Schlüsseln) verwenden möchten, ist die Konvertierung der Schlüssel in Zahlen eine Möglichkeit.Im ersten Beispiel werden die Schlüssel nicht konvertiert, und Sie können innerhalb der Schleife mit der Funktion 'key' darauf zugreifen. Im Allgemeinen ist es jedoch einfacher, 'foreach' zu verwenden. :) –

+0

Ich kannte die Macht der 'foreach' nicht. Sehr gut! Vielen Dank! – GtGtGt

Verwandte Themen