获取PHP中元素的第一个键?

时间:2010-03-03 21:31:39

标签: php

如果元素/值是数组中的第一个元素/值,我正在尝试添加额外的类标记。问题是,我真的不知道密钥会是什么......

数组的缩小示例

Array (
    [0] => Array(
            id => 1
            name = Miller
            )
    [1] => Array(
                id => 4
                name = Miller
            )
    [2] => Array(
                id => 2
                name => Smith
    [3] => Array(
                id => 7
                name => Jones
            )
    [4] => Array(
                id => 9
                name => Smith
            )
)

所以,如果它是“name”的第一个实例,那么我想添加一个类。

3 个答案:

答案 0 :(得分:1)

我想我有点理解你要做的事情。您可以遍历数组并检查每个名称。将您已经创建的名称保存在一个单独的数组中。

for each element in this array
    if is in array 'done already' then: continue
    else:
        create the new class
        add name to the 'done already' array

对于伪代码很抱歉,但它解释得相当不错。

编辑:这是代码...

$done = array();
foreach ($array as $item) {
    if (in_array($item['name'], $done)) continue;
    // It's the first, do something
    $done[] = $item['name'];
}

答案 1 :(得分:1)

我假设你正在遍历这个数组。因此,可以使用一个简单的条件:

$first = 0;
foreach ($arr as $value) {
    if (!$first++) echo "first class!";
    echo $value;
    // The rest of process.
}

要获得数组的第一个值,您还可以使用旧式reset()current()函数:

reset($arr);
$first = current($arr);

答案 2 :(得分:0)

Animuson很好。如果可能的话,还有一点点补充:

>  $done = array();  
>  foreach ($array as $item) {
>      if (in_array($item['name'], $done)) continue;
>      // It's the first, do something
>      $done[] = $item['name'];  }

in_array()会非常快地变慢。尝试类似:

$done = array();  
foreach ($array as $item) {
  $key = $item['name'];
  if( !isset( $done[$key] )) {
    ...
  }
  $done[$key] = true;
}

顺便说一句。太糟糕了,这个网站不支持所有用户的评论。