【问题标题】:Count how many times strpos accured inside a foreach loop计算 strpos 在 foreach 循环中累积的次数
【发布时间】:2015-08-18 12:25:51
【问题描述】:

如何显示循环时一个句子显示了多少次?

$i = 0;
foreach ($parts as $new[$i]) {

    $abouttoexpire = strpos($new[$i], 'Your Airbnb question is about to expire');
    $anairbnbexpert = strpos($new[$i], 'An Airbnb expert is waiting on feedback from you regarding');
    $requesttoalter = strpos($new[$i], 'Your request to alter reservation');

    //when the message was made
    preg_match('/<div class="timestamp"[\s\S]*?>(.*)*?\+0000<\/div>/', $new[$i], $dateofmsg);

    //between 9am and 6pm
    $hour = date('H', strtotime(@$dateofmsg[1]));
    if ($hour >= 9 && $hour <= 18) {

        //if we found this sentence
        if ($abouttoexpire !== FALSE) {
        //how i show here how many times we catch the sentence @abouttoexpire??
        }
    }
}
$i++;

条件内:if ($abouttoexpire !== FALSE) 我如何打印此 sence (@abouttoexpire) 在循环期间的累积时间?

【问题讨论】:

    标签: php loops foreach


    【解决方案1】:

    试试这个...

      $i = 0;
        $j = 0;
        $k = 0;
        foreach ($parts as $new[$i]) {
    
        if ($hour >= 9 && $hour <= 18) {
    
        $j++;
    
       if ($abouttoexpire !== FALSE) {
    
         $k++;
    
            }
        }
        $i++;
        }
    
        echo "foreach loop=".$i;
        echo "if loop =".$j;
         echo "within if loop =".$k;
    

    【讨论】:

    • 这里的检查短语在哪里?
    • 我的意思是 if ($abouttoexpire !== FALSE) 我可以看到你将它添加到代码中.. 你的解决方案给了我:foreach loop=1 if loop =0 within if loop =0 foreach循环=1 if 循环=0 if 循环=0 foreach 循环=1 if 循环=0 if 循环=0 foreach 循环=1 if 循环=0 if 循环=0 foreach 循环=1 if 循环=1 if 循环= 0 foreach loop=1 if loop =1 within if loop =0 但不是确切的数字。也许是因为这是在另外 2 个 foreach 循环中循环。但如果我有大约 20 个 strpos 要检查,我将制定 20 个条件和运算符。这不是一个好方法
    【解决方案2】:
    $i = 0;$j=0;
    foreach ($parts as $new[$i]) {
    
      $abouttoexpire = strpos($new[$i], 'Your Airbnb question is about to expire');
      $anairbnbexpert = strpos($new[$i], 'An Airbnb expert is waiting on feedback from you regarding');
      $requesttoalter = strpos($new[$i], 'Your request to alter reservation');
    
      //when the message was made
      preg_match('/<div class="timestamp"[\s\S]*?>(.*)*?\+0000<\/div>/', $new[$i], $dateofmsg);
    
      //between 9am and 6pm
      $hour = date('H', strtotime(@$dateofmsg[1]));
      if ($hour >= 9 && $hour <= 18) {
    
        //if we found this sentence
        if ($abouttoexpire !== FALSE) {
          $j++;
        }
      }
    
     }
     $i++;
    
    echo 'no_of_times:'.$j;
    

    【讨论】:

    • 这给了我 no_of_times:0
    • 为什么你需要这个 $i++,它的外部 foreach..对吗?
    • 它是必需的,因为那里有 3 个循环,但即使没有 $i 会发生什么变化?
    猜你喜欢
    • 2013-12-02
    • 2019-07-08
    • 2023-01-18
    • 2019-02-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多