2014-07-18 5 views
5

zugreifen Ich schäme mich zu fragen, und es ist wahrscheinlich ein Duplikat, aber meine Google-Ergebnisse kommen kurz (ich suche falsch, ich denke) und so eine grundlegende Frage ist mich ärgern.Wie N-te Element eines Arrays in PHP

Ich habe ein Array mit Werten, die ich nicht kenne.

in Java, einen Blick auf dem zweiten Eintrag zu haben, würde ich so etwas wie

var = array[1] 

verwenden verstehe ich Php-Arrays Schlüssel-Wert-Paare sind, aber wie kann ich bei dem n-ten Wert in einem Blick einfach Array, um sein Schlüssel-Wert-Paar zu sehen, und noch besser, dann greifen Sie nur auf den Schlüssel/Wert?

+3

standardmäßig auch PHP int als Schlüssel verwenden, ausgehend von 0. – Sugar

+2

Arrays * kann * real-Arrays sein, oder * kann * sein HashMaps ; Es ist eine Art für beide, und ja, das kann sehr verwirrend sein. Es gibt keine integrierte Möglichkeit, dies zu überprüfen (siehe: http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or) -sequentiell? rq = 1). Beachten Sie, dass einige Funktionen/Operationen ein "Array" in eine "Hashmap" umwandeln können oder umgekehrt ... Der "Array" -Typ ist einer der größten Konstruktionsfehler der Sprache IMHO ... – Carpetsmoker

+2

var_dump ($ array) –

Antwort

16

Wenn Ihre Schlüssel numerisch sind, dann funktioniert es genau das gleiche:

$arr = ['one', 'two', 'three']; // equivalent to [0 => 'one', 1 => 'two', 2 => 'three'] 
echo $arr[1]; // two 

Wenn Sie Ihre Schlüssel nicht numerisch sind oder nicht kontinuierlich numerisch, wird es ein bisschen schwieriger:

$arr = ['one', 'foo' => 'bar', 42 => 'baz']; 

Wenn Sie den Schlüssel kennen, den Sie möchten:

echo $arr['foo']; // bar 

Wenn Sie jedoch nur wissen die versetzt, könnten Sie dies versuchen:

$keys = array_keys($arr); 
echo $arr[$keys[1]]; 

oder numerisch indizieren das Array:

$values = array_values($arr); 
echo $values[1]; 

Oder schneiden:

echo current(array_slice($arr, 1, 1)); 

meisten Wahrscheinlich möchten Sie aber trotzdem das Array durchlaufen. Das ist typisch für Arrays mit unbekanntem Inhalt. Wenn der Inhalt unbekannt ist, dann erscheint es seltsam, dass Sie an einem bestimmten Offset interessiert sind.

foreach ($arr as $key => $value) { 
    echo "$key: $value", PHP_EOL; 
} 
+0

Danke. Ich habe '$ keys = array_keys ($ arr); echo $ arr [$ keys [1]]; ' – myol

+0

Der Grund, warum ich nur einen möchte, ist, weil durch das Durchlaufen aller von ihnen nur die Seite abstürzt. – myol

+2

Dann machst du wahrscheinlich etwas anderes falsch. Eine einfache Iteration sollte nichts zum Absturz bringen. – deceze

1

Wenn Sie das n-te Element zugreifen möchten, ohne den Index zu wissen, können Sie next()n mal verwenden, um die n-te Element zu erreichen.

for($i = 0; $i<$n; $i++){ 
    $myVal = next(); 
} 
echo $myVal; 

Es gibt andere Möglichkeiten, auf ein bestimmtes Element zuzugreifen, das bereits von @deceze erwähnt wurde.

0

Wenn Sie jedes N-te Element zuzugreifen:

$n = 3; 
foreach (array_keys($arr) as $i => $key) { 
    if (($i+1) % $n) { 
     continue; 
    } 

    $value = $arr[$key]; 
} 
Verwandte Themen