2014-07-18 100 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]; 
} 
相关问题