Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在foreach循环中使用该函数而不是预定义数组时,是否每次foreach循环迭代都会调用该函数?_Php_Arrays_Function_Loops_Foreach - Fatal编程技术网

Php 在foreach循环中使用该函数而不是预定义数组时,是否每次foreach循环迭代都会调用该函数?

Php 在foreach循环中使用该函数而不是预定义数组时,是否每次foreach循环迭代都会调用该函数?,php,arrays,function,loops,foreach,Php,Arrays,Function,Loops,Foreach,考虑以下代码段: <!DOCTYPE html> <html> <head> <style> table, th, td { border: 1px solid black; border-collapse: collapse; } th, td { padding: 5px; } </style> </head

考虑以下代码段:

<!DOCTYPE html>
<html>
  <head>
    <style>
      table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
      }
      th, td {
        padding: 5px;
      }
    </style>
  </head>
  <body>    

    <table>
      <tr>
        <td>Filter Name</td>
        <td>Filter ID</td>
      </tr>

      <?php
        foreach (filter_list() as $id =>$filter) {
          echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
        }
      ?>

    </table>    
  </body>
</html>
通常在foreach循环中,使用现有数组迭代。 但是在上面的代码中,不使用foreach循环中的现有数组,而是调用一个内置函数,该函数返回一个数组

所以,我的问题是函数filter_list是否在每次循环迭代中都被调用

如果是,那么Frach循环如何管理下一个关键值对到上一次迭代?

如果没有,为什么以及如何工作

另外,让我知道这是一种正确的编码方式吗

该代码是否足够有效并遵循标准编码实践

多谢各位

过滤器列表将只被调用一次,它的返回值将临时存储在内存中,并进行迭代


这样做很好-如果您需要代码中其他地方的filter_list结果,您应该将其存储在变量中,这样以后就不需要重新执行。

函数filter_list将仅在第一次迭代中调用,返回的值将存储在缓冲区中,该缓冲区将在所有迭代中使用对于foreach循环。

true,在更改数组结构时,这也会导致一些奇怪的事情发生。在过去有很多乐趣,它就像一个鬼影副本。。。英雄联盟