这是我简单的looper代码
foreach( $cloud as $item ) {
if ($item['tagname'] == 'nicetag') {
echo $item['tagname'];
foreach( $cloud as $item ) {
echo $item['desc'].'-'.$item['date'];
}
} else
//...
}
我需要在此looper中使用if
方法来获取具有相同名称但不同描述和日期的标记。问题是我不知道每个标签名称因为任何用户都可以创建这个标签。
我不是真正的php开发人员,所以如果它对傻瓜提出质疑并感谢任何答案,我将会这样做!
答案 0 :(得分:1)
一种可能的解决方案是声明一个临时变量,该变量将保存当前循环的标记名:
$currentTagName = '';
foreach( $cloud as $item ) {
if ($item['tagname'] != $currentTagName) {
echo $item['tagname'];
$currentTagName = $item['tagname'];
}
echo $item['desc'] . '-' . $item['date'];
}
我假设您的数组结构如下:
$cloud array(
array('tagname' => 'tag', 'desc' => 'the_desc', 'date' => 'the_date'),
array('tagname' => 'tag', 'desc' => 'the_desc_2', 'date' => 'the_date_2'),
...
);
<强> BUT 强>
此解决方案引发了一个问题 - 如果您的数组未按标记名排序,则可能会出现重复的标记名。
所以更好的解决方案是重新定义你的数组结构:
$cloud array(
'tagname' => array (
array('desc' => 'the_desc', 'date' => 'the_date'),
array('desc' => 'the_desc_2', 'date' => 'the_date_2')
),
'another_tagname' => array (
array('desc' => 'the_desc_3', 'date' => 'the_date_3'),
...
)
);
然后你可以得到这样的数据:
foreach ($cloud as $tagname => $items) {
echo $tagname;
foreach($items as $item) {
echo $item['desc'] . '-' . $item['date'];
}
}