代码之家  ›  专栏  ›  技术社区  ›  RobertPitt

对还是错?While循环

  •  4
  • RobertPitt  · 技术社区  · 15 年前

    嘿,伙计们,我以前从来没有做过这种方法,我只是试着看看它是否有效,它就像一个梦。

    通常人们倾向于这样做。

    $tags = array();
    while($row = $statement->FetchObject())
    {
         $tags[] = $row;
    }
    

    但如果我这样做,它会更快还是更少的代码。

    $tags = array();
    while($tags[] = $statement->FetchObject()){}
    


    更新:

    我知道更干净的代码要比更少的代码好得多,但因为我以前从来没有使用过这种方法,所以我只是好奇它的利弊。

    5 回复  |  直到 15 年前
        1
  •  15
  •   salathe    15 年前

    一般的问题是退出 while

    对于传统方法来说,这不是一个问题,因为“假”值是给定给 $row 从未应用于数组。

    至于性能,或者可读性,这些都不是问题,因为代码并不是你想要它做的。

        2
  •  3
  •   NikiC    15 年前

    fetchAll : $statement->fetchAll(PDO::FETCH_OBJ) .

        3
  •  1
  •   Pekka    15 年前

    我发现前者更具可读性,更容易掌握,而且我确信两者之间的任何性能差异都是可以忽略的。

    我完全赞成。

        4
  •  1
  •   Crozin    15 年前

    $tags = array();
    while ($tags[] = $stmt->fetchObject());
    

    这段代码当然要短一点,形式更为冗长:

    $tags = array();
    while ($tag = $stmt->fetchObject()) {
        $tags[] = $tag;
    }
    

    但是哪一个更容易阅读?你可以说两者都很明显,实际上我同意你的看法。但是一般的保养哪一个比较容易呢?添加新语句,如 $tag->doSth();

        5
  •  0
  •   Luca Matteis    15 年前

    当然,只要 FetchObject() 每次调用时都会相应地更改其返回值;)