我正在使用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将一个元素列表与另一个元素列表匹配。
答案 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!";
}
}