php 2 个 foreach 循环

php 2 foreachloops

我想输出关联数组的key,如果preg_match函数returns为真

但不知何故,第二个 foreach 循环 returns 只是一个键。

为什么会这样?

这是我的 php 代码:

<?php

     $log = file('ab.boerse.de.access.log.2');

     foreach ($log as $key => $value)
     {
         $result = explode(" ", $value);

         echo "<pre>";
         print_r($result);
         echo "</pre>";

         foreach ($result as $key2 => $value2)
         {
             echo "<pre>";
             print_r($key2);
             echo "</pre>";

             if (preg_match("/somedata/", $value2))
             {
                 print_r($key2);
             }
             else
             {
                 break;
             }
         }
     }
            
 ?>

这是输出的数组,其下方有键“0”:

Array (
    [0] => localhost
    [1] => somedata
    [2] => somedata
    [3] => somedata
    [4] => somedata
    [5] => somedata
    [6] => somedata
    [7] => somedata
    [8] => somedata
    [9] => somedata
    [10] => somedata
    [11] => somedata
    
) 0

第一项的值为 localhost 而不是 somedata,因此正则表达式不匹配任何内容,它会执行结束第二个 foreach 的中断。如果您想跳过不需要的项目,请尝试使用 continue 而不是 breakcontinue 仅终止循环的当前迭代并继续下一项。