【问题标题】:How to break while loop after condition meet in PHP?如何在PHP中满足条件后打破while循环?
【发布时间】:2020-12-06 04:29:16
【问题描述】:

while 循环满足某些条件时,我正在打印 $row->title,但不幸的是,没有破坏它正在打印所有结果。下面是一个示例,其中第一个 [_id] 与最后一个 [_id] 匹配,因此它必须只打印第一个值 ['title'],即 MarQ,但它同时打印 Marq 和 Jean。

我的数据库是这样的 -

    MongoDB\Model\BSONDocument Object
(
    [storage:ArrayObject:private] => Array
        (
            [_id] => MongoDB\BSON\ObjectID Object
                (
                    [oid] => 5fcbd8fbecf357fae06e2264
                )
    [title] = MarQ,
    [age] = 22
)
)

MongoDB\Model\BSONDocument Object
(
    [storage:ArrayObject:private] => Array
        (
            [_id] => MongoDB\BSON\ObjectID Object
                (
                    [oid] => 9s8393hf83959348200d
                )
    [title] = Bennet,
    [age] = 29
)
)

MongoDB\Model\BSONDocument Object
(
    [storage:ArrayObject:private] => Array
        (
            [_id] => MongoDB\BSON\ObjectID Object
                (
                    [oid] => 5fcbd8fbecf357fae06e2264
                )
    [title] = Jean,
    [age] = 20
)
) 

我在这里尝试匹配id,如果 id 匹配它只会打印 while 循环中的第一个值。

但在我的代码中,它打印的是所有值,而不仅仅是第一个值。

    foreach ($cursor as $row) {

         $i = 0;

      while ($i < count($row)) {

       $id   = isset($row[$i]["_id"]);

        $j = $i + 1;
while ($j < count($row) && $id == isset($row[$j]["_id"])) {
         $r++;
                   ?>
          <?php
         echo '<br>';
    ?>
     <?php

    $j++;
}
      $i++;
                    }
              }

 

(我只能在 while 循环中这样做)。

【问题讨论】:

  • @FSford 在放置break; 后仍然打印是否还有其他方法可以在没有while 循环的情况下使用它?

标签: php mongodb loops while-loop


【解决方案1】:

您可以使用break 来跳出循环。 Documentation

 foreach ($cursor as $row) {

         $i = 0;

      while ($i < count($row)) {

       $id   = isset($row[$i]["_id"]);

        $j = $i + 1;
while ($j < count($row) && $id == isset($row[$j]["_id"])) {
         $r++;
         break;
                   ?>
          <?php
         echo '<br>';
    ?>
     <?php

    $j++;
}
      $i++;
                    }
              }

【讨论】:

  • 在放置break; 后仍然打印,是否还有其他方法可以在没有while 循环的情况下使用它?
猜你喜欢
  • 2010-11-06
  • 2016-01-20
  • 2021-12-14
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2017-03-04
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多