2014-07-18 98 views
5

我很尷尬地問這個問題,它很可能是重複的,但我的谷歌搜索結果很短(即時搜索錯誤,我猜),這樣一個基本問題是激怒我。如何在PHP中訪問數組中的第N個元素

我有一個包含我不知道的值的數組。

在java中,看看在第2項,我會使用類似

var = array[1] 

我理解PHP數組的鍵值對,但我怎麼可以簡單地看一下第n值的數組來查看它的鍵值對,甚至更好,然後訪問鍵/值?

+3

默認情況下,PHP也使用int作爲鍵,從0 – Sugar

+2

陣列開始*可能*是真實的陣列,或者可以* *是包含HashMap ;這是兩種類型,是的,這可能是非常混亂。沒有內置的方法來檢查這個(請參閱:http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or -sequential?RQ = 1)。請注意,某些函數/操作可以將「陣列」轉換爲「哈希映射」,反之亦然......「陣列」類型是語言恕我直言的主要設計缺陷之一... – Carpetsmoker

+2

var_dump($ array) –

回答

16

如果你的鑰匙是數字,那麼它的工作原理完全一樣:

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

如果你的鍵不是數字或不連續的數字,它變得有點棘手:

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

如果您知道密鑰您想要:

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

但是,如果你只知道偏移,你可以試試這個:

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

或數值重新索引數組:

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

或切片它:

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

最無論如何,你可能想要循環訪問數組,但這通常是你對未知內容數組的處理。如果內容是未知的,那麼無論如何你都對一個特定的偏移感興趣似乎很奇怪。

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

謝謝。我用'$ keys = array_keys($ arr); echo $ arr [$ keys [1]];' – myol

+0

我只想要一個的原因是因爲遍歷所有這些只會使頁面崩潰。 – myol

+2

然後你可能會做其他的事情。一個簡單的迭代不應該使任何事情崩潰。 – deceze

1

如果你想在不知道索引來訪問第n個元素,你可以使用next()ň倍,達到第n個元素。

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

還有其他方法可以訪問@deceze已經提到的特定元素。

0

如果您要訪問的每一個第n個元素:

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

    $value = $arr[$key]; 
} 
相關問題