如果元素/值是数组中的第一个元素/值,我正在尝试添加额外的类标记。问题是,我真的不知道密钥会是什么......
数组的缩小示例
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”的第一个实例,那么我想添加一个类。
答案 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;
}
顺便说一句。太糟糕了,这个网站不支持所有用户的评论。