2010-09-21 55 views
20

我怎样才能获得当前元素序号,当我遍历数组?PHP - 获得一个元素的索引从阵列

我知道计数(),但我希望有获取当前场指数也内置功能,而无需添加额外的一个计数器变量。

这样的:

foreach($array as $key => value) 
    if(index($key) == count($array) .... 
+0

这有什么错用'$ key'? – BoltClock 2010-09-21 21:32:07

+0

$关键是在我的情况的字符串。反正我只是想知道如果有一个PHP函数,可以得到场指数。如果没有,我只需要使用$ i计数器... – Alex 2010-09-21 21:33:47

+0

对于数组中键的数组元素的索引不匹配的情况,我相信Alex想获得当前索引。例如:'a =>苹果,b =>香蕉':那么'index(b)'会返回'1'。 – 2010-09-21 21:34:25

回答

37

您应该使用key()功能。

key($array) 

应返回当前密钥。

如果您需要在当前关键的位置:

array_search($key, array_keys($array)); 
+4

OP想要一个位置,而不是一个关键。没有必要得到一个凯,因为它已经分配给$ key变量 – 2010-09-21 21:38:48

+1

+1好的答案,我只想指出,亚历克斯增加一个计数器会更有效,每次搜索数组。 – Gazler 2010-09-21 21:44:59

+1

所以没有索引式功能。谢谢:)我只是使用一个计数器 – Alex 2010-09-21 21:47:43

4
foreach() { 
    $i++; 
    if(index($key) == $i){} 
    // 
} 
+1

他说,无需添加额外的计数器变量 – rideon88 2010-09-21 21:37:28

+0

@rideon OP经常有奇怪的愿望。不要太字面意思;)其实这个应该被接受。 – 2010-09-21 21:56:13

-2

有没有办法让一个位置你真正想要的。
对于关联数组,以确定最后的迭代可以使用已经提到的计数器变量,或首先确定最后一个项目的关键:

end($array); 
$last = key($array); 
foreach($array as $key => value) 
    if($key == $last) .... 
9

PHP数组都是整数索引和字符串索引。你甚至可以将它们混合使用:

array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow'); 

你想要索引值为'blue'?是3吗?但是,这实际上是价值'yellow'的指数,所以这将是一个歧义。

为你的另一个解决方案是强迫数组值的整数索引的列表。

foreach (array_values($array) as $i => $value) { 
    echo "$i: $value\n"; 
} 

输出:

0: red 
1: green 
2: white 
3: blue 
4: yellow 
-2

阵列不包含索引当元件是可结合的。 PHP中的数组可以包含混合值是这样的:

$var = array("apple", "banana", "foo" => "grape", "carrot", "bar" => "donkey"); 
print_r($var); 

为您提供:

Array 
(
    [0] => apple 
    [1] => banana 
    [foo] => grape 
    [2] => carrot 
    [bar] => donkey 
) 

什么是你想实现的,因为你需要在一个关联数组的索引值?

0
function Index($index) { 
    $Count = count($YOUR_ARRAY); 
    if ($index <= $Count) { 
     $Keys = array_keys($YOUR_ARRAY); 
     $Value = array_values($YOUR_ARRAY); 
     return $Keys[$index] . ' = ' . $Value[$index]; 
    } else { 
     return "Out of the ring"; 
    } 
} 

echo 'Index : ' . Index(0); 

更换($ YOUR_ARRAY)

相关问题