在foreach函数中输出计数

时间:2010-12-12 09:02:55

标签: php arrays

我正在使用SimplePie,我无法弄清楚如何输出计数或循环的键值。

不应该这个

<?php foreach ($feed->get_items() as $item): ?>
        <?php
                $i = key($item);
                echo $i;
        ?>
<?php endforeach; ?>

,或者这个

<?php foreach ($feed->get_items() as $item): ?>
        <?php
                $i = count($item);
                echo $i;
        ?>
<?php endforeach; ?>

为每个输出一个唯一的号码?

uniqid()在这种情况下不起作用,因为我在页面上运行了两次循环,并尝试根据ID将一个元素列表与另一个元素列表匹配。

3 个答案:

答案 0 :(得分:3)

as一起使用的单个参数被解释为存储的变量,而不是密钥。如果您需要密钥,则需要以下列方式使用=>

foreach ($feed->get_items() as $key => $item):
    echo $key;
endforeach

作为旁注,您在数组中的项目上使用key()count(),而不是整个数组,这是无效的。据我所知,即使应用于整个数组,也无法保证key()能够按预期工作。它适用于控制迭代的循环,与next一样。

答案 1 :(得分:2)

要获得foreach中的'count',您需要一个额外的变量。如果按顺序索引数组而不是关联数,那么获取密钥很容易也是一样的。以下是两个示例:

$array = array(
  'foo' => 'bar'
);

$i = 0;
foreach ($array as $key => $value)
{
    /*
        code where $i is the 'count' (index) and $key is the associative $key.
    */
    /* $i == 0 */
    /* $key == 'foo' */
    /* $value == 'bar' */
    $i++;
}
您在上面使用的

键($ item)不起作用,因为您试图获取不再与原始数组关联的值的键。 count($ item)是子数组$ item的计数。

答案 2 :(得分:0)

您可以使用get_id()方法

喜欢:

foreach ($feed->get_items() as $item)
{
    $prev_ids = array('guid1', 'guid2', 'guid3', 'guid4');
    if (in_array($item->get_id(true), $prev_ids))
    {
        echo "This item is already stored.";
    }
    else
    {
        echo "This is a new item!";
    }
}