分类非ID类别PHP循环

时间:2009-10-11 00:51:57

标签: php loops content-type

在我的项目中,有各种不同内容类型的搜索结果。出于不重要的原因,并非所有内容类型都带有唯一ID。但是,我尝试编写此循环来检测IDless内容类型,并为它们提供唯一的ID。

基本上,结果如下:

  • 类别ID 3
  • 类别ID 3
  • 类别ID 4
  • 非ID类别1
  • 非ID类别2

[...]

我试过了:

$current = $result->section;                        
// if there's a category ID -- use it
if ($current != null) echo $result->sectionid;
    else
    // if this is the first IDless category -- initialize. this happens once.
    if ($virginity == true) {
        $store = $current;
        $virginity = false;                             
        }
// if initialized and current category string is the same as stored category string -- print it
if (($virginity == 0) && ($store = $current)) {
    echo $defaultID;
    }
// if initialized and current category string is different from the stored category string -- set new default category +1 and print it
if (($virginity == false) && ($store != $current)) {
    $defaultID = $defaultID++;
    echo $defaultID;
    $store = $current;
    }
你能看到我要去哪里吗? 尝试在下一个循环会话中为搜索结果中出现的每个新类别提供唯一ID - 检查类别字符串是否与前一个相同 - 如果是 - 使用相同的ID,否则 - 使用1,打印新ID并存储新类别。

但是:这不能正常工作。

为什么?

1 个答案:

答案 0 :(得分:0)

你的代码有点难以阅读,但我看到的一个大红旗是这个块:

//You have  a single equals sign here v
if (($virginity == 0) && ($store = $current)) 
{
    echo $defaultID;
}

这意味着,只要$virginity==0,该行将始终运行,$store将始终等于$current

顺便说一下,我将推荐一些重新格式化和可读性的建议。拿走他们或留下他们,但这只是我的观点。

$ current = $ result-> section;

if($ current!= null)  {//如果其中一个结果有括号,则在两者上放置括号   echo $ result-> sectionid;  }  否则如果($ virginity == true)  {//如果这是第一个无ID类别 - 初始化。这发生了一次。   $ store = $ current;   $ virginity = false;
 }

//you're setting $virginity=false or true, so doing !$virginity makes sense
// if it was actually a number, then comparing to 0 is better
// also, use parentheses only where really needed, otherwise it's just clutter
if (!$virginity && $store == $current) 
{
    echo $defaultID;
}

if(!$ virginity&& $ store!= $ current)  {//如果初始化和当前类别字符串与存储的类别字符串不同 - 设置新的默认类别+1并打印它   $ defaultID = $ defaultID ++;   echo $ defaultID;   $ store = $ current;  }